一般商品名都可能存在空格,如 $keywords = ‘金士顿(Kingston)dtG3 U盘 8G’,但是直接用sql模糊查询时是获取不到对应的数据的,要先做处理。
1、先将输入查询的字符串数据中的所有空格去掉,如PHP用str_replace(’ ‘,”,$keywords);
2、使用sql的replace函数,这样sql语句就变成 WHERE REPLACE(goods_name,’ ‘,”) LIKE ‘%金士顿(Kingston)dtG3U盘8G%’; (此时用户输入的数据已去除空格),这样就能查询出来了。
SQL中的replace函数
REPLACE
用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。
语法
REPLACE ( ‘string_expression1’ , ‘string_expression2’ , ‘string_expression3’ )
参数
‘string_expression1’
待搜索的字符串表达式。string_expression1 可以是字符数据或二进制数据。
‘string_expression2’
待查找的字符串表达式。string_expression2 可以是字符数据或二进制数据。
‘string_expression3’
替换用的字符串表达式。string_expression3 可以是字符数据或二进制数据。
返回类型
如果 string_expression(1、2 或 3)是支持的字符数据类型之一,则返回字符数据。如果 string_expression(1、2 或 3)是支持的 binary 数据类型之一,则返回二进制数据。
示例
下例用 xxx 替换 abcdefghi 中的字符串 cde。
SELECT REPLACE(‘abcdefghicde’,’cde’,’xxx’) GO
下面是结果集:
———— abxxxfghixxx (1 row(s) affected)