繁体   English   中英

在MySQL SELECT中使用REPLACE()

[英]Using REPLACE() in MySQL SELECT

我提前道歉,问我肯定会证明这是一个非常简单的问题。

我有一个MySQL(5.5)数据库,其中包括一个电话号码字段。 我正在尝试创建一个将搜索该字段的语句,删除任何空格。 因此,搜索'0208'将返回'020 8','02 08','0 208','0208'等。

这是在Delphi XE2中,如果有所作为。

'SELECT * FROM sales_ledger WHERE REPLACE(telephone, " ", "") LIKE "%' + SearchEdit.Text + '%"'

......给我一个错误......

WHERE子句中的过滤器无效

...和...

'SELECT REPLACE(telephone, " ", "") FROM sales_ledger WHERE REPLACE(telephone, " ", "") LIKE "%' + SearchEdit.Text + '%"'

...给我...

字段名称无效。 一般SQL错误。 未找到列。

......而且我确实需要所有返回的领域。

我可以请求一些帮助来纠正语法。 如果您需要更多信息,请不要犹豫。 非常感谢你花时间陪伴。

编辑:我错过了一条可能很重要的信息。 该表实际上是一个我通过ODBC访问的Sage数据库。 因为我尝试的任何工作都可能是根本问题。 抱歉不早点说。

您的查询似乎工作正常,请参阅演示

首先尝试此查询到您的DB客户端

SELECT * FROM sales_ledger 
WHERE REPLACE(telephone, " ", "") LIKE "%0208%"

编辑:

如果你查询仍然无法正常工作。 一步一步的过程。

  • 尝试运行一个简单的选择查询( SELECT * FROM sales_ledger
  • 如果第一个查询运行尝试添加简单where条件。 因此,您可以逐步使您的查询与原始查询类似,并找到实际错误的位置。

试试这个 ::

SELECT 
REPLACE(telephone,' ', '') as replacedColumn
FROM sales_ledger 


WHERE REPLACE(telephone,' ', '') LIKE '%"+ SearchEdit.Text +"%'"

要么

Select temp1.* 
from
(
SELECT 
REPLACE(telephone,' ', '') as replacedColumn
FROM sales_ledger 
) as temp1

WHERE temp1.replacedColumn LIKE '%"+SearchEdit.Text+"%'"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM