我使用 as 从数据库中搜索记录MySql
-
SELECT * FROM tab WHERE col LIKE '%myvalue%';
这工作正常并显示所有具有myvalue
.
现在的问题是我有一些记录,例如,my'value
和并且还想在搜索中包含这些记录。此外,当我搜索then 它应该显示and 。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%'
任何其他解决方案都不符合您的所有要求。
采用
SELECT * FROM tab WHERE col LIKE '%myvalue%' OR col LIKE '%my_value%'
下划线_
是单字符通配符。
这个怎么样?
SELECT * FROM tab WHERE col LIKE 'my%' OR col LIKE '%value'
这将检查col
应该以 my 开头并以 value 结尾。
由于可能有任何特殊字符并且正则表达式不适用于 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%"));
请参阅此演示。