Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类MYSQL语句不使用特殊字符_Mysql - Fatal编程技术网

类MYSQL语句不使用特殊字符

类MYSQL语句不使用特殊字符,mysql,Mysql,我对以下问题有异议: ID Long Latt city 1 n/a n/a Newcastle-upon-Tyne 2 n/a n/a Newcastle Upon Tyne 3 n/a n/a Stoke-on-Trent 4 n/a n/a Stoke on Trent 在我的表格中,我有以下内容: ID Long Latt city

我对以下问题有异议:

ID     Long    Latt    city 
1      n/a     n/a     Newcastle-upon-Tyne 
2      n/a     n/a     Newcastle Upon Tyne 
3      n/a     n/a     Stoke-on-Trent 
4      n/a     n/a     Stoke on Trent
在我的表格中,我有以下内容:

ID     Long    Latt    city 
1      n/a     n/a     Newcastle-upon-Tyne 
2      n/a     n/a     Newcastle Upon Tyne 
3      n/a     n/a     Stoke-on-Trent 
4      n/a     n/a     Stoke on Trent
如果有人进入搜索“纽卡斯尔类型”,我希望他们都显示。我的sql语句是:

select * from `properties` where `city` LIKE '%Newcastle Upon Tyne%'

但只有一个节目?但是这是一个相似的语句,“泰恩河畔的纽卡斯尔”和“泰恩河畔的纽卡斯尔”是相似的-那么为什么在这个实例中只显示精确的匹配呢?

因为空格不是通配符。空格就像相似语句中的任何其他字母一样。如果您这样做:

select * from `properties` where `city` LIKE '% %'
它将查找包含空格的所有记录

如果希望任何记录包含按该顺序排列的单词,而不考虑它们之间的字符,则可以执行以下操作:

select * from `properties` where `city` LIKE '%Newcastle%Upon%Tyne%'

LIKE比较仅针对该行返回TRUE

LIKE比较本质上等同于等式比较

SELECT 'ab d' =    'ab d'  --> TRUE
     , 'ab d' LIKE 'ab d'  --> TRUE
区别在于,LIKE在右侧的值中支持两个通配符。……百分号字符(
%
)和下划线字符(
\
)。
%
字符匹配零个、一个或多个字符。
字符匹配任何单个字符


比较来自

 city LIKE 'Newcastle_Upon_Tyne'
 city LIKE 'Newcastle%Upon%Tyne'
这两个因素对城市价值的评估都是正确的

'Newcastle-Upon-Tyne'
'Newcastle7Upon4Tyne'
此外,带有百分号的值也会对城市值进行评估,例如

'NewcastleUpon56789Tyne'
'Newcastle FEE- UponFI Tyne'

如果需要比LIKE comarison提供的更精确的匹配,可以使用正则表达式

city REGEXP 'Newcastle[ -]Upon[ -]Tyne'
对于城市值,这将返回TRUE

'Newcastle Upon Tyne'
'Newcastle-Upon Tyne'
'Newcastle Upon-Tyne'
'Newcastle-Upon-Tyne'

是否将使用“\”(单字符通配符)更准确一点?虽然我可能会使用你的答案。:)将删除此评论later@RyanVincent我同意
\uu
是有效的,但这取决于处理这些事情的方式,我认为……是的,如果你想每个单词之间只有一个字符,请使用下划线。这取决于你想要什么。我会找到答案这三个单词中间有任何东西,或者没有任何东西。因此,
NewcastleuponTyne--on--Tyne
NewcastleuponTyne
都是匹配的,但它们都不会与下划线匹配。