Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在用户输入之前匹配特定字符串_Mysql_Sql_Regex_Mysql Regexp - Fatal编程技术网

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

Mysql 在用户输入之前匹配特定字符串,mysql,sql,regex,mysql-regexp,Mysql,Sql,Regex,Mysql Regexp,我有以下字符串: SDZ420-1241242, AS42-9639263, SPF3-2352353 我想在搜索时“转义”SDZ420-部分,并且只使用最后的数字搜索,到目前为止,我已经尝试了RLIKE'^[a-zA-Z\d-],这很有效,但我不知道如何向它添加下一个数字(用户输入,比如1242)。我不能像“%$input”那样使用,因为即使我只是将'242'作为搜索字符串输入,也会返回一行 简而言之,用户输入的'1241242'应返回带有'SDZ420-1241242'的行。除了创建一

我有以下字符串:

SDZ420-1241242,
AS42-9639263,
SPF3-2352353  
我想在搜索时“转义”SDZ420-部分,并且只使用最后的数字搜索,到目前为止,我已经尝试了
RLIKE'^[a-zA-Z\d-]
,这很有效,但我不知道如何向它添加下一个数字(用户输入,比如
1242
)。我不能像“%$input”那样使用
,因为即使我只是将
'242'
作为搜索字符串输入,也会返回一行


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

请注意,在不跳过某些疯狂的循环的情况下,此搜索需要命中表格中的每一行;如果你有一个关于这个的索引,它不会使用这个(通常使用索引,假设它是正确的类型,当您在开始搜索时,它们往往是正确的类型,并且通常仅当使用
如“针%”
而不是
RLIKE
时使用。如果这是一个问题,则单独存储数字,然后在其上放置索引,这可能是解决问题的最简单方法

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

SELECT*FROM foo WHERE colName LIKE?

通过以下方式使用编程语言生成的字符串:

String searchTerm = "%-" + digits;

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

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

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

这与java有何关系?编辑此项可删除该标记。比较前去掉前缀:
WHERE SUBSTRING_INDEX(列“-”,-1)=“$input”