在用户输入之前匹配特定字符串

Match specific string before user input

我有以下字符串:

SDZ420-1241242,
AS42-9639263,
SPF3-2352353  

我想在搜索时“转义”SDZ420- 部分,只使用最后一位数字进行搜索,到目前为止,我已经尝试了 RLIKE '^[a-zA-Z\d-]' 这行得通,但我对如何添加下一位数字感到困惑 (用户输入,对它说 1241242)。我不能使用 LIKE '%$input',因为即使我只输入 '242' 作为搜索字符串,那也会 return 一行。

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

请注意,不要跳过一些疯狂的圈套,此搜索需要命中 table 中的每一行;如果你有一个索引,它不会使用那个(通常使用索引,假设它是正确的类型,当你开始搜索时,通常只使用 LIKE 'needle%'而不是 RLIKE。如果这是一个问题,单独存储数字,然后在其上放置索引,可能是解决您问题的最简单方法。

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

SELECT * FROM foo WHERE colName LIKE ?

使用您的编程语言制作的字符串:

String searchTerm = "%-" + digits;

您也可以将数字作为字符串传入并使用:

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

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