簡體   English   中英

帶WHERE的普及SQL-匹配空間

[英]Pervasive SQL with WHERE - matching spaces

我們的會計應用程序正在使用Pervasive SQL10。我需要從中獲取產品數據。 問題是“名稱”列的固定長度為12,應用程序用空格填充其余部分。

因此,每次使用PHP腳本獲取數據時,都需要在WHERE子句中用空格填充該名稱的其余部分。

列中的示例數據:

  • 65LD11
  • 42BRD03
  • 65LD112
  • (空間)65LD12
  • 165LD12

我一直在使用: SELECT * FROM products WHERE name LIKE '65LD12%'; 這並不完美,但是最大的問題是名稱以空格作為第一個字符,因為我不能使用_%因為它會同時匹配65LD12和165LD12名稱。

開頭或結尾可以有任意數量的空格。 在MySQL中,我將使用REGEXP_LIKE僅匹配空格,但是在Pervasive中,我有點迷失了。 有什么辦法可以做到這一點?

我不了解Pervasive,但是在Standard SQL中,您可以做一個簡單的

WHERE TRIM(name) = '65LD12'

當然,清理數據並刪除不必要的前導空格會更好,TRIM將阻止在索引上使用。 然后name ='65LD12'應該返回正確的數據,而不管尾隨空格如何(同樣,我不知道Pervasive是否正確實現了該功能)

根據評論進行編輯:

普適性中沒有TRIM,但是LTRIM:

WHERE LTRIM(name) = '65LD12'

如果仍然不能返回正確的行(即以錯誤的方式進行了Pervasive實現的字符串比較),則還必須添加RTRIM:

WHERE RTRIM(LTRIM(name)) = '65LD12'

嘗試這個:

SELECT * FROM products WHERE REPLACE(name,' ','') LIKE '65LD12%';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM