mysql查询字段中带空格的值的sql语句,并替换

mysql查询字段中带空格的值的sql语句,并替换

大家好,又见面了,我是全栈君。

(自己写的这四行)查询带有空格值的数据:SELECT * FROM 表名 WHERE 字段名 like ‘% %’;

 去掉左边空格 update tb set col=ltrim(col);

 去掉右边空格 update tb set col=rtrim(col);

 去掉两边空格 update tb set col=rtrim(col);

 

 

(1)mysql replace 函数
 
语法:replace(object,search,replace)
 
意思:把object中出现search的全部替换为replace

 代码如下 复制代码

 

update `news` set `content`=replace(`content`,’ ‘,”);//清除news表中content字段中的空格 这样就可以直接用like查询了。

(2)mysql trim 函数
 
语法:trim([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
 
以下举例说明:

 代码如下 复制代码

mysql> SELECT TRIM(‘ phpernote  ‘); 

-> ‘phpernote’ 

mysql> SELECT TRIM(LEADING ‘x’ FROM ‘xxxphpernotexxx’); 

-> ‘phpernotexxx’

mysql> SELECT TRIM(BOTH ‘x’ FROM ‘xxxphpernotexxx’); 

-> ‘phpernote’ 

mysql> SELECT TRIM(TRAILING ‘xyz’ FROM ‘phpernotexxyz’); 

-> ‘phpernotex’ 

当我们在使用sql查询的时候,如果数据库中的这个字段的值含有空格(字符串内部,非首尾),或者我们查询的字符串中间有空格,而字段中没有空格。那么我们很有可能就什么都查不到。假如有下面的一张表:

表名

 id  url   title   content 
 1   www.111cn.net   李杨 技术博客   PHP技术博客 
 2   www.anzhuo8.net   我的涞源 论坛   涞源地方论坛 
 3   www.百度   百度   百度一下 
 4   哥哥   google   谷歌一下 

这张表里面,第一和第二条记录的title部分是有空格的,如果我们并不知道,或者由于内容的不能,有无空格有很大的不确定性:

 代码如下 复制代码

select * from table where title = ‘李杨技术博客’;
select * from table where title like ‘%李杨技术博客%’;

以上两句sql均无法查询出正确的结果,那么我们应该怎么写呢?

请看下面:

 代码如下 复制代码

select * from table where trim(replace(title,’ ‘,”)) = trim(replace(‘李杨技术博客’,’ ‘,”));
select * from table where trim(replace(title,’ ‘,”)) like trim(replace(‘%李杨 技术博客%’,’ ‘,”));

trim的作用是去掉字符串收尾的空格,replace的作用是去掉字符串内部的空格。

这样就可以正确的进行匹配了,如果不希望给mysql太多压力,条件部分的对空格的处理我们可以在程序中实现。

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索replace , 字符串 , 函数 代码 mysql新增字段sql语句、mysql修改字段sql语句、mysql删除字段sql语句、mysql加字段sql语句、mysql添加字段语句,以便于您获取更多的相关知识。

转自:https://yq.aliyun.com/ziliao/53405

补充:MySQL中关于查询条件中的字符串空格问题

https://blog.csdn.net/alibert/article/details/40981185

假设当前mysql数据库中有个表:sysuser

有个字段是:sysUseName

字段中有条记录的内容是:robin

请看下面这两个SQL语句:

SELECT * from sysuser s where s.sysUseName = ‘robin’

SELECT * from sysuser s where s.sysUseName = ‘robin空格’

SELECT * from sysuser s where s.sysUseName = ‘RoBin空格’

这三条语句均可以查询出那条记录。

官方文档上说是MySQL校对规则属于PADSPACE,对CHAR和VARCHAR值进行比较都忽略尾部空格,和服务器配置以及MySQL版本都没关系。

MySQL安装目录下有个doc目录(Windows),里面的 Data Types -> String Types -> The CHAR and VARCHAR Types 这一小节有对这个问题的说明以及相关的例子(版本不一样可能章节的编号可能有变动,还是看标题吧): All MySQL collations are of type PADSPACE. This means that all CHAR and VARCHAR values in MySQL are compared without regard to any trailing spaces.?

这样带来的问题是:我如何需要精确匹配robin这个内容?假设有一个登陆功能,我希望用户输入‘robin’可以登陆,但是输入‘robin空格’却不能登录,该如何实现。

解决办法如下:

SELECT * from sysuser s where s.sysUseName = BINARY ‘robin ‘

BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写,精确匹配。

另外,因为有的MySQL特别是4.*以前的对于中文检索会有不准确的问题,可以在检索的时候加上binary。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111990.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • css 实现水平居中的方法总结

    css 实现水平居中的方法总结

    2021年6月13日
    109
  • srvctl命令_srvctl命令

    srvctl命令_srvctl命令添加删除ASMCommand:srvctladdasm[-llsnr_name][-pspfile][-dasm_diskstring]Command:srvctlremoveasm-l[-f]Example:srvctladdasm-lLISTENER_ASM01-p+diskg_data/spfile.oraExample:srvctlremoveasm-lLISTENER_ASM01-f启动停

    2022年9月11日
    0
  • 数据结构面试题之位图查找

    1.思路有的人一看到这个题,很简单嘛最麻烦的就是从头遍历一遍的事情嘛. 不过要看清楚题! 40亿个无符号整数.我们生活中1G内存占用的字节数1024*1024*1024为10

    2021年12月28日
    52
  • threadpooltaskexecutor线程池使用_线程池的状态

    threadpooltaskexecutor线程池使用_线程池的状态使用ThreadPoolExecutor创建线程池源码分析,ThreadPoolExecutor的构造函数publicThreadPoolExecutor(intcorePoolSize,intmaximumPoolSize,longkeepAliveTime,…

    2022年10月1日
    0
  • 踩坑啥意思_年轻人踩坑

    踩坑啥意思_年轻人踩坑Unity小科普老规矩,先介绍一下Unity的科普小知识:Unity是实时3D互动内容创作和运营平台。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。Unity平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。也可以简单把Unity理解为一个游戏引擎,可以用来专业制作游戏!

    2022年9月4日
    2
  • Java怎么安装 详细教程来了 附带安装包

    Java怎么安装 详细教程来了 附带安装包首先,有很多小伙伴不会java环境搭建,java不需要安装,java是绿色软件,尤其是openjdk是绿色软件,你解压缩即可食用,步骤如下:1)去injdkcn上下载openjdk或者gaa,都可以,下载之后,解压缩2)去idea官方网站下载免费的,社区版的idea,对,就是右边色的那个版本,别下错,下成左边蓝色版本,那个是收费的,下载下来之后,安装ide3)打开刚刚安装好的ide,然后就可以开始写java了,当ide问你,jdk在哪里的时候,你就把你刚刚解压缩后的位置告诉ide就可以了

    2022年7月9日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号