我们会以这种形式获得标识从用户:搜索数据库ID字段
"A-123456-14"
并希望在数据库以这种形式简单的ID搜索:
123456
我有试过
select * from orders where id = '%' + searchId + '%';
这里id = 123456在数据库和searchId ='A-123456-14'从用户得到。
,但它不工作作为其无法正常
(A:是的前缀, - 是分隔符,14是后缀)
请帮我解决这个问题。
我们会以这种形式获得标识从用户:搜索数据库ID字段
"A-123456-14"
并希望在数据库以这种形式简单的ID搜索:
123456
我有试过
select * from orders where id = '%' + searchId + '%';
这里id = 123456在数据库和searchId ='A-123456-14'从用户得到。
,但它不工作作为其无法正常
(A:是的前缀, - 是分隔符,14是后缀)
请帮我解决这个问题。
你可以使用:
SELECT * FROM orders WHERE WHERE 'A-123456-14' REGEXP '[:punct:]' + id + '[:punct:]';
上面你可以替换 'A-123456-14'
与用户输入searchId
我已经试过它的做工精细
试试这个:
SELECT * FROM orders WHERE searchId LIKE CONCAT('%-', Id, '-%')
searchId从获得用户和在其数据库中的ID。正如你所说我尝试过但不工作 –
@ murtaza.webdev检查我更新的答案 –
(答:是前缀, - 是分隔符,14是postFix)每个事物都是动态的(即前缀,分隔符和后缀)变化,编号为 –
SELECT
*
FROM
orders
WHERE
id = SUBSTRING_INDEX(
SUBSTRING_INDEX(searchId, '-', 2),
'-',- 1)
编辑:
如果你想的一切动态,那么你可以试试这个(你应该张贴分隔符作为一个参数还,如果是动态的) 。
SELECT
*
FROM
orders
WHERE
id = SUBSTRING_INDEX(
SUBSTRING_INDEX(searchId, delimiter, 2),
delimiter, - 1)
(答:是前缀, - 是分隔符,14是postFix)每一件事情都是动态的(即,前缀,分隔符和后缀)更改accroding按顺序 –
我认为这应该工作 – Melon
@Melon:' - '是不是静态的动态取决于顺序的许多标准(如动态分隔符) –
我肯定会删除你不需要使用你选择的编程语言(如Java或PHP或任何你正在使用)字符串的位,而不是SQL。然后,只需使用select * from orders where id = ?
并将编程语言中的参数设置为"%"+id+"%"
即可。
?
参数,否则,你可以打开自己到SQL injection。
其工作正常... –