我们的会计应用程序使用的是Pervasive SQL 10.我需要从中获取产品数据。问题是"名称"列的固定长度为12,应用程序用空格填充其余部分。
所以每次我使用我的PHP脚本来获取数据时,我需要用WHERE
子句填充名称的其余部分以匹配它。
列中的示例数据:
我一直在使用:SELECT * FROM products WHERE name LIKE '65LD12%';
。这不是完美的,但最大的问题是将空格作为第一个字符,因为我不能使用_
或%
,因为它会匹配65LD12和165LD12名称。
开头或结尾可以有任意数量的空格。在MySQL中,我会使用REGEXP_LIKE
来匹配空格,但在Pervasive中,我有点迷失。有什么方法可以做到这一点?
答案 0 :(得分:4)
我不知道Pervasive,但在标准SQL中你可以做一个简单的
WHERE TRIM(name) = '65LD12'
当然最好清理数据并删除不必要的前导空格,TRIM会阻止对索引的使用。然后 name = '65LD12'应该返回正确的数据而不管尾随空格(再次,我不知道Pervasive是否正确实现了这一点)
根据评论进行修改:
Pervasive中没有TRIM,但是LTRIM:
WHERE LTRIM(name) = '65LD12'
如果仍未返回正确的行(即Pervasive以错误的方式实现字符串比较),您还必须添加RTRIM:
WHERE RTRIM(LTRIM(name)) = '65LD12'
答案 1 :(得分:1)
试试这个:
SELECT * FROM products WHERE REPLACE(name,' ','') LIKE '65LD12%';
答案 2 :(得分:1)