mysql字符串去掉尾0_在 MySQL 数据库中,怎样去掉字符串字段值结尾的回车换行符 (\r\n 或 0D 0A)...

碰到的问题:

使用 locate 函数查询 op_phone 表时,没有返回结果,语句如下:

select operator from op_phone where locate(operator,'中国联通');

打开 op_phone 表,可以看到该表中有很多记录的 operator 是“联通”,百思不得其解。

后来用 select 查询第一条联通的记录,然后复制 operator 字段值到 UE 中查看,发现 "联通"两字的后面还有回车换行符:C1 AA CD A8 0D 0A

之所以出现这种情况,是因为 op_phone 表中的记录是从一个文本文件中导入的。

用以下语句检查该字段的长度:

select length(operator) from op_phone limit 0,1;

得到的结果是 5,可见没有把 0A 当作字符串内容的一部分,而是像空格在结尾时一样被当作空白而忽略。

网上有人说:"MYSQL把所有连续的“空白”符当作一个单个的空格。"

--经试验,这句话是错误的:我在"中国移动"中间插入4个空格,select 得到的 length 是 12;

这句话应该改成:"MYSQL把出现在结尾的所有连续的“空白”符当作-0,即并不认为是字符串内容的一部分。"

将回车换行合起来作为一个字符串,在字符串字段中查找,返回是0,找不到:

select locate(char(13,10),operator) from op_phone limit 0,1;

只查找回车,可以找到:

select locate(char(13),operator) from op_phone limit 0,1;

// 返回是3,operator 的值为"联通\r\n"

去掉结尾的回车换行符的语句:

update op_phone set operator=left(operator,locate(char(13),operator)-1);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值