如何在LIKE语句中忽略左边距?

时间:2014-12-01 13:08:52

标签: sql sql-server sql-server-2008 sql-like

我正在修改ID搜索栏的代码,我正在尝试让用户能够使用SQL语法搜索ID,例如'%535%'。这样做很简单,但我现在一直在寻找和绞尽脑汁,我似乎无法找到解决下述问题的方法:

问题是这些ID都是左边填充的varchar(14),如:

'          8534'
'        393583'
'    123456/789'

这实际上禁止用户仅搜索 以查找以特定序列开头的ID,因为'85%'由于空白填充而未返回任何结果。

我正在维护的网站是用经典ASP(w / JScript)编写的旧网站,搜索是通过存储过程完成的,整个'WHERE'子句作为参数传入。

我无法修改数据库,所以我要问的是:有没有办法修改子句以便忽略填充,'52%'返回以52开头的ID?

3 个答案:

答案 0 :(得分:2)

SELECT LTRIM(ID) FROM table WHERE ID LIKE '%1234%'

编辑,因为您只能修改WHERE语句

WHERE LTRIM(ID) LIKE '1234%'

答案 1 :(得分:2)

你想:

where ltrim(id) like '123%'

或者,假设id中没有内部空格:

where concat(' ', id) like '% 123%'

答案 2 :(得分:1)

where子句中的函数往往很慢。这样的事情可能会更快:

where id like '123%'
or id like '% 123%'