簡體   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