msg
=
a,msg
=
b,可是如果msg字段的内容中包含回车换行等空白字符(最常见的是内容开头和末尾出现换行),则比对就不成功,造成短信息审核不成功。
由于内容插入的时候没办法进行完全的过滤,所以审核这里就经常出问题,搞的头大,而MySQL的trim函数没办法去掉回车和换行,只能去掉多余的空格,今天研究了一下MySQL的函数,replace函数,终于解决掉了这个问题,具体解决办法如下:
假设想要审核数据库中内容为“我爱你
”的短信息(注意内容后有换行)通过(status改变成1)
之前的SQL语句是不起作用的
复制代码
代码如下:
UPDATE
`tran`
SET
`status`
=
'1'
WHERE
`msg`
=
'我爱你'
修改之后的语句
复制代码
代码如下:
UPDATE
`tran`
SET
`status`
=
'1'
WHERE
trim(
replace(
`msg`,
'\r\n',
'
'
)
)
=
'我爱你'
把数据中的回车换行等替换成空格之后再trim掉,就达到目的了,虽然不是特别完美,但是由于没办法在用户录入的时候控制,所以只能出此下策,好在MySQL内置函数的效率还是很有保证的。
更新(15:50):
复制代码
代码如下:
UPDATE
`tran`
SET
`status`
=
'1'
WHERE
trim(
trim(
BOTH
'\r\n'
FROM
content
)
)
=
'我爱你'
用了两个trim,这样的好处是不会替换内容中间的换行和回车,只会处理头尾的空格换行回车,相当于php中trim函数的作用了。
附:replace
用法
1.replace
into
复制代码
代码如下:
replace
into
table
(id,name)
values('1','a'),('2','b')
此语句的作用是向表table中插入两条记录。
2.replace(object,
search,replace)
把object中出现search的全部替换为replace
select
replace('www.qq.com',
'q',
'Y')
上例输出结果
www.YY.com
注:trim和replace函数详细的用法请查看MySQL手册。
作者:跃龙杂记
trim函数可以过滤指定的字符串:完整格式:TRIM([{BOTH
|
LEADING
|
TRAILING}
[remstr]
FROM]
str)
简化格式:TRIM([remstr
FROM]
str)
返回字符串
str
,
其中所有remstr前缀和/或后缀都已被删除。若分类符BOTH、LEADIN或TRAILING中没有一个是给定的,则假设为BOTH。remstr为可选项,在未指定情况下,可删除空格。
[sql]
view
plain
copy
在CODE上查看代码片派生到我的代码片
mysql>
SELECT
TRIM('
bar
')
->
'bar'
mysql>
SELECT
TRIM(LEADING
'x'
FROM
'xxxbarxxx')
--删除指定的首字符
x
->
'barxxx'
mysql>
SELECT
TRIM(BOTH
'x'
FROM
'xxxbarxxx')
--删除指定的首尾字符
x
->
'bar'
mysql>
SELECT
TRIM(TRAILING
'xyz'
FROM
'barxxyz')
--删除指定的尾字符
x
->
'barx'
MySQL中的去除左空格函数:
LTRIM(str)
[sql]
view
plain
copy
在CODE上查看代码片派生到我的代码片
mysql>
SELECT
LTRIM('
barbar')
->
'barbar'
mysql中的去除右空格函数:
RTRIM(str):
[sql]
view
plain
copy
在CODE上查看代码片派生到我的代码片
mysql>
SELECT
RTRIM('barbar
')
->
'barbar'
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)