类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
都是匹配的,但它们都不会与下划线匹配。