Php 我可以在sql查询条件中使用trim吗
嗨,我正在数据库中创建反向电话号码查找。我有一个框,用户输入一个电话号码(在我的示例中,号码是01772708200无空格等),我要做的是查询我的sql数据库并返回匹配结果。问题是我的数据库包含数千个不同格式的数字(我应该在开始时格式化,但我没有),这些数字可能表示为01772 708200或01772 708 200等) 我已经包括了一个脚本,我认为这将修剪搜索条件,但它不工作的位Php 我可以在sql查询条件中使用trim吗,php,sql,Php,Sql,嗨,我正在数据库中创建反向电话号码查找。我有一个框,用户输入一个电话号码(在我的示例中,号码是01772708200无空格等),我要做的是查询我的sql数据库并返回匹配结果。问题是我的数据库包含数千个不同格式的数字(我应该在开始时格式化,但我没有),这些数字可能表示为01772 708200或01772 708 200等) 我已经包括了一个脚本,我认为这将修剪搜索条件,但它不工作的位 $value="01772708200" ; $condition = "TRIM(phone
$value="01772708200" ;
$condition = "TRIM(phone1) LIKE '%$value%' ";
$result = mysql_query("SELECT * FROM major WHERE $condition ") ;
value是用户输入的数字,为清晰起见,此处仅显示为变量。phone1是我的数据库表中名为major的电话号码 有人能告诉我我做错了什么吗 谢谢仅删除前导空格和尾随空格,因此
01772 708200
仍将保持不变。您需要使用
您还可以使用运算符编写一些忽略其他()-
的内容。只删除前导空格和尾随空格,因此01772 708200
仍将保持不变。您需要使用
您还可以使用操作符编写一些忽略其他
()-
的内容。您可能需要执行以下操作
$condition = " REPLACE(phone1, ' ', '') LIKE '%$value%'";
你可能会想做类似的事情
$condition = " REPLACE(phone1, ' ', '') LIKE '%$value%'";
“修剪”仅删除左右两侧的空间。使用:
REPLACE(REPLACE(col1, ' ', ''),'\t','')
替换空间和选项卡的所有实例
(顺便说一句,谷歌搜索SQL注入。:)Trim只删除左右两侧的空格。使用:
REPLACE(REPLACE(col1, ' ', ''),'\t','')
替换空间和选项卡的所有实例
(顺便说一下,谷歌搜索SQL注入。:)TRIM只删除前导空格和尾随空格。为了清除中间的空格,您希望使用替换。
REPLACE(phone1, ' ', '')
修剪只删除前导空格和尾随空格。为了清除中间的空格,您希望使用替换。
REPLACE(phone1, ' ', '')
这个问题的答案是:是的,你可以,有时你必须 如果在数据进入数据库并包含前导空格或尾随空格之前,没有对数据进行任何清理,那么如果在不使用通配符的情况下搜索该术语,您会希望:
SELECT name
FROM tbl
WHERE trim(name)='foo'
如果名称为“foo”,则不使用trim()
对于您的特定问题: 它按预期工作,但您可能希望使用
replace()
或regexp\u replace()
,具体取决于您使用的数据库以及实际数据的外观
- Trim用于“修剪”单词边界开头和结尾的空格
- 在某些数据库中,您需要使用
来修剪前后btrim()
- 在较旧的数据库中,可能需要结合使用
和ltrim()
来分别修剪左侧和右侧rtrim()
这个问题的答案是:是的,你可以,有时你必须 如果在数据进入数据库并包含前导空格或尾随空格之前,没有对数据进行任何清理,那么如果在不使用通配符的情况下搜索该术语,您会希望:
SELECT name
FROM tbl
WHERE trim(name)='foo'
如果名称为“foo”,则不使用trim()
对于您的特定问题: 它按预期工作,但您可能希望使用
replace()
或regexp\u replace()
,具体取决于您使用的数据库以及实际数据的外观
- Trim用于“修剪”单词边界开头和结尾的空格
- 在某些数据库中,您需要使用
来修剪前后btrim()
- 在较旧的数据库中,可能需要结合使用
和ltrim()
来分别修剪左侧和右侧rtrim()
$condition = 'REPLACE(REPLACE(REPLACE(phone1,"/",""),"-","")," ","")';
您可以嵌套更多的字符串,这样它就可以替换“/”、“-”和“.”以上的字符串。嗯,TRIM对您没有帮助,因为它只会删除字符串开头或结尾的空格。您可以将$condition替换为:
$condition = 'REPLACE(REPLACE(REPLACE(phone1,"/",""),"-","")," ","")';
您可以嵌套更多,这样它就可以替换“/”、“-”和“.”以上的内容。对于正在阅读本文并使用MSSQL的用户,我发现以下内容非常有用:
(MSSQL中没有TRIM函数,但使用RTRIM和LTRIM就可以了)对于那些正在阅读并正在使用MSSQL的人,我发现这很有用:
(MSSQL中没有微调功能,但使用RTRIM和LTRIM就可以了)用于哪个数据库?您的手机格式是否只有空格?trim()只删除开头和结尾的空格。我希望您逃过了用户输入,以防止SQL注入攻击,如:value=%';更新用户设置密码=md5('xxx'),其中username='admin'--@天哪,我敢肯定米克正在使用MYSQL——不仅他的脚本包含了
MYSQL\u查询(“选择*
”),而且他之前的一些问题也包含了MYSQL标签。用于哪个数据库?你的手机格式唯一的问题是空格吗?trim()只删除开头和结尾的空格。我希望您转义了用户输入,以防止SQL注入攻击,如:value=%';UPDATE user SET password=md5('xxx'),其中username='admin';@OMG,我相当肯定Mick正在使用MYSQL-他的脚本不仅包括MYSQL\u查询(“选择*
…,但他之前的一些问题也包括mysql标签。