我正在修改ID搜索栏的代码,我正在尝试让用户能够使用SQL语法搜索ID,例如'%535%'。这样做很简单,但我现在一直在寻找和绞尽脑汁,我似乎无法找到解决下述问题的方法:
问题是这些ID都是左边填充的varchar(14),如:
' 8534'
' 393583'
' 123456/789'
这实际上禁止用户仅搜索 以查找以特定序列开头的ID,因为'85%'由于空白填充而未返回任何结果。
我正在维护的网站是用经典ASP(w / JScript)编写的旧网站,搜索是通过存储过程完成的,整个'WHERE'子句作为参数传入。
我无法修改数据库,所以我要问的是:有没有办法修改子句以便忽略填充,'52%'返回以52开头的ID?
答案 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%'