[英]Pervasive SQL with WHERE - matching spaces
我們的會計應用程序正在使用Pervasive SQL10。我需要從中獲取產品數據。 問題是“名稱”列的固定長度為12,應用程序用空格填充其余部分。
因此,每次使用PHP腳本獲取數據時,都需要在WHERE
子句中用空格填充該名稱的其余部分。
列中的示例數據:
我一直在使用: 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.