Php 在Mysql表中搜索名称(带或不带前导空格)
我有一个表,其中一些名称带有前导空格,而一些名称没有前导空格Php 在Mysql表中搜索名称(带或不带前导空格),php,mysql,sql,Php,Mysql,Sql,我有一个表,其中一些名称带有前导空格,而一些名称没有前导空格 我有一个变量$name,必须与表中的一个名称匹配,这个$name没有前导空格。在这种情况下,我应该如何编写查询?修剪每个值的前导和尾随空格 SELECT * FROM tableName WHERE TRIM(colName) = '$name' 修剪修剪前导和尾随 LTRIM修剪前导空间 RTRIM修剪尾随空间我建议使用选择* 从表名 其中colName=“$name”或colName=concat(“,$name”) 。主要原因
我有一个变量
$name
,必须与表中的一个名称匹配,这个$name
没有前导空格。在这种情况下,我应该如何编写查询?修剪每个值的前导和尾随空格
SELECT *
FROM tableName
WHERE TRIM(colName) = '$name'
修剪
修剪前导和尾随LTRIM
修剪前导空间RTRIM
修剪尾随空间我建议使用
选择*
从表名
其中colName=“$name”或colName=concat(“,$name”)
。主要原因是索引的使用:如果对计算列ltrim(colName)
进行筛选,DB引擎将无法对colName使用任何索引。我的建议是允许在colName上使用索引。LTRIM(name)
将删除空格,然后您可以匹配LTRIM(name),比如“Smith”
这个问题很难找到重复的:)我使用了LTRIM(colName)而不是修剪,因为我只想删除前导空格。谢谢使用trim
?:)有什么问题吗我想,trim
会删除所有空格,而有些名字之间确实有空格,这就是原因。我还是会尝试一下TRIM
不会删除中间的空格。与john woo给出的答案相比,此查询的效率有多高?嗯,其中TRIM(colName)=“$name”
意味着DB必须对所有行计算TRIM(colName)
,并返回匹配项。如果使用具有精确匹配的或
ed选项,索引搜索将返回得更快(前提是有索引!)。很难说有多少。。。