[英]MySql Search With Special Character
我使用MySql
从数据库中搜索记录为 -
SELECT * FROM tab WHERE col LIKE '%myvalue%';
这工作正常并显示具有myvalue
所有记录。
现在的问题是我有一些记录,如my'value
, myva'lue
, myval-ue
和my-value
,还想在搜索中包含这些记录。 此外,当我搜索my'value
那么它应该显示myvalue
和my-value
。
怎么做到这一点? 任何帮助。 是否可以使用LIKE
运算符?
当您使用PHP时,如果有人使用您的搜索,您应该执行以下操作:
my'value
变为myvalue
) myvalue
变为%m%y%v%a%l%u%e%
) SELECT * FROM tab WHERE col LIKE '%m%y%v%a%l%u%e%'
任何其他解决方案都不符合您的所有要求。
SQL小提琴: http ://sqlfiddle.com/#!2/20f811/2
采用
SELECT * FROM tab WHERE col LIKE '%myvalue%' OR col LIKE '%my_value%'
下划线_
是单个字符通配符。
这个怎么样?
SELECT * FROM tab WHERE col LIKE 'my%' OR col LIKE '%value'
这将检查col
应该从我开始并以值结束。
因为可以有任何特殊字符和regexp不能与MySQL一起工作,我建议你通过将特殊字符替换为null然后将字符串与myvalue匹配来做你想要在PHP中实现的目标。
希望这对你有所帮助。
我完全不知道php,但可以告诉你该做些什么。
mysql = "SELECT id, col FROM tab WHERE col LIKE '%my%' OR col LIKE '%value%'";
rs = mysql.execute();
String newString = "";
while (rs.next()) {
newString = rs.getString(2);
newString = new string after replacing special characters using regexp
if (newString.equals("myvalue")) {
// your code here..... this is place what you wanted.
}
}
收到...
PHP部分
$term = str_replace('-','',str_replace(',', '', str_replace('\'', '', $term)));
MySql部分
SELECT *
FROM tab
WHERE ((REPLACE(REPLACE(REPLACE(col, '\'', ''), ',', ''), '-', '') LIKE "%$term%")
OR (col LIKE "%$term%"));
看这个演示 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.