Mysql 在结尾处查找类型为%xyxy的数字的sql查询。。例如:92834646838717474

Mysql 在结尾处查找类型为%xyxy的数字的sql查询。。例如:92834646838717474,mysql,codeigniter,Mysql,Codeigniter,我想把所有xyxy类型的数字都记下来。比如8699307676或9816224343。我的数据库里有成千上万的数字。我需要一个简单的sql查询来搜索这些在末尾为xyxy模式的数字。我正在使用php codeigniter框架和mysql 根据@jarlh的相关评论编辑:下面是MySql和其他常见SQL实现表达式,后面是ANSI SQL表达式。 您可以根据DBMS自身的功能对其进行调整 以下假设target是您查看的列的名称 我假设目标是INT类型或类似的类型,因此我们必须首先将其转换为字符串格式

我想把所有xyxy类型的数字都记下来。比如8699307676或9816224343。我的数据库里有成千上万的数字。我需要一个简单的sql查询来搜索这些在末尾为xyxy模式的数字。我正在使用php codeigniter框架和mysql

根据@jarlh的相关评论编辑:下面是MySql和其他常见SQL实现表达式,后面是ANSI SQL表达式。 您可以根据DBMS自身的功能对其进行调整

以下假设target是您查看的列的名称

我假设目标是INT类型或类似的类型,因此我们必须首先将其转换为字符串格式:

-- this is for MySql and most other implementations:
CAST(target, VARCHAR)
-- this is for standard ANSI SQL:
CAST (target AS VARCHAR)
然后有一个字符串,我们可以得到它有趣的部分,你正在寻找:

-- this is for MySql and most other implementations:
SUBSTR(CAST(target, VARCHAR), -2)
-- and
SUBSTR(CAST(target, VARCHAR), -4, 2)
--
-- this is for standard ANSI SQL:
SUBSTRING (CAST (target AS VARCHAR) FROM CHAR_LENGTH (CAST (target AS VARCHAR)) -2 FOR 2)
-- and
SUBSTRING (CAST (target AS VARCHAR) FROM CHAR_LENGTH (CAST (target AS VARCHAR)) -4 FOR 2)
最后,整个搜索查询可能如下所示:

-- this is for MySql and most other implementations:
SELECT * FROM `yourTable`
WHERE SUBSTR(CAST(target, VARCHAR), -2) = SUBSTR(CAST(target, VARCHAR), -4, 2)
-- report from above for ANSI implementation...

如果该列是整数类型,则可以执行如下操作NumberTable是您的表,value是包含要检查的数字的列

select * from NumbersTable
where value % 100 = (value/100) % 100
值%100获取最后两位数字 值/100%100从末尾获取数字3和4

编辑 根据jarlh的评论:%是模函数的SqlServer操作符。替换为对数据库有效的运算符或函数


如果列的类型是varchar而不是integer,则可以执行类似的操作:分离最后两个字符和下两个字符并进行比较。您需要在Sqlserver中使用一些子字符串函数。正确的子字符串函数将非常有用。

您的数字是如何存储的?您使用的是哪种DBMS?您可以提供您的表,或者您可以只提供用于数字的数据类型如ANSI SQL模,例如WHERE MODcolumn\u name,10000=7676。@a\u horse\u with\u no\u name:我正在使用mysql with php。产品特定的答案,并且没有指定dbms。ANSI SQL使用MOD而不是%.我使用的是mysql,它是一个varchar字段。