Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.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
Php 在Mysql表中搜索名称(带或不带前导空格)_Php_Mysql_Sql - Fatal编程技术网

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选项,索引搜索将返回得更快(前提是有索引!)。很难说有多少。。。