1

我有以下字符串:

SDZ420-1241242,
AS42-9639263,
SPF3-2352353  

我想在搜索时“转义” SDZ420- 部分,并且只使用最后一个数字进行搜索,到目前为止,我已经尝试过RLIKE '^[a-zA-Z\d-]'哪个有效,但我对如何添加下一个数字(例如用户输入1241242)感到困惑。我不能使用LIKE '%$input',因为即使我只是输入'242'搜索字符串,它也会返回一行。

简而言之,用户输入'1241242'应该返回带有 的行'SDZ420-1241242'。除了只用数字创建一个单独的表之外,还有其他方法吗?

4

2 回答 2

2

请注意,无需跳过一些疯狂的环节,此搜索需要命中表中的每一行;如果您对此有索引,则不会使用该索引(通常使用索引,假设它是正确的类型,它们往往是,当您在开始时搜索时,并且通常仅在使用LIKE 'needle%'和不使用时RLIKE。如果那是一个问题,分别存储数字,然后在上面放置一个索引,可能是在这里解决问题的最简单方法。

要查询最后几位数字,为什么不:

SELECT * FROM foo WHERE colName LIKE ?

通过以下方式使用您的编程语言制作的字符串:

String searchTerm = "%-" + digits;
于 2020-08-25T13:06:41.053 回答
0

您还可以将数字作为字符串传递并使用:

where substring_index(colname, '-', -1) = ?

这不需要更改应用程序代码中的值。

于 2020-08-25T13:29:50.633 回答