具有WHERE的普适SQL - 匹配空格

时间:2014-04-29 07:33:16

标签: php sql regex pervasive

我们的会计应用程序使用的是Pervasive SQL 10.我需要从中获取产品数据。问题是"名称"列的固定长度为12,应用程序用空格填充其余部分。

所以每次我使用我的PHP脚本来获取数据时,我需要用WHERE子句填充名称的其余部分以匹配它。

列中的示例数据:

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

我一直在使用:SELECT * FROM products WHERE name LIKE '65LD12%';。这不是完美的,但最大的问题是将空格作为第一个字符,因为我不能使用_%,因为它会匹配65LD12和165LD12名称。

开头或结尾可以有任意数量的空格。在MySQL中,我会使用REGEXP_LIKE来匹配空格,但在Pervasive中,我有点迷失。有什么方法可以做到这一点?

3 个答案:

答案 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)