使用字符串操纵的id搜索数据库id字段

时间:2014-01-07 11:06:36

标签: mysql sql search select sql-like

我们将以这种形式获得用户的身份证明:

"A-123456-14"

并希望在此格式中使用简单ID搜索数据库:

123456

我试过了

 select * from orders where id = '%' + searchId + '%';

这里id = 123456在数据库中,searchId ='A-123456-14'来自用户。

但它不能正常工作

(A:是前缀, - 是分隔符,14是postFix)

请帮我解决这个问题。

4 个答案:

答案 0 :(得分:2)

你可以使用:

 SELECT * FROM orders WHERE WHERE 'A-123456-14' REGEXP '[:punct:]' + id + '[:punct:]';

在上面你可以用用户输入searchId

替换'A-123456-14'

我已经尝试了很好的工作

答案 1 :(得分:1)

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)

答案 2 :(得分:0)

试试这个:

SELECT * FROM orders WHERE searchId LIKE CONCAT('%-', Id, '-%')

答案 3 :(得分:0)

我肯定会使用您选择的编程语言(例如Java或PHP或您正在使用的任何语言)删除不需要的字符串,而不是SQL。然后只需使用select * from orders where id = ?并将参数设置为编程语言中的"%"+id+"%"

  • 编程语言用于编程,逻辑,解析等,SQL用于定义您希望从数据中获取的内容
  • 请勿忘记使用?之类的参数,否则您最多可以打开SQL injection