我们将从用户在这个表单中获取ID:
"A-123456-14"
我想用简单的id在数据库中搜索:
123456
我已经尝试过
select * from orders where id = '%' + searchId + '%';
数据库中的ID为123456,用户提供的搜索ID为'A-123456-14'。
但是由于格式不正确,因此无法正常工作。
(A:前缀,-:分隔符,14:后缀)
请帮助我解决这个问题。
您可以使用以下内容:
SELECT * FROM orders WHERE WHERE 'A-123456-14' REGEXP '[:punct:]' + id + '[:punct:]';
在上面的代码中,你可以用用户输入的searchId替换'A-123456-14'。
我已经尝试过,它能够正常工作。
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)
试试这个:
SELECT * FROM orders WHERE searchId LIKE CONCAT('%-', Id, '-%')
我肯定会使用您选择的编程语言(例如Java或PHP或您正在使用的任何其他语言)删除字符串中不需要的部分,而不是在SQL中进行操作。然后,在您的编程语言中使用select * from orders where id = ?
,并将参数设置为"%"+id+"%"
。
?
这样的参数,否则您可能会面临 SQL注入的风险。