【发布时间】:2016-09-14 02:45:14
【问题描述】:
有一张桌子:
CREATE TABLE n_dummy (
id int(10) unsigned NOT NULL AUTO_INCREMENT,
`values` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
INSERT INTO `n_dummy` (id, `values`) VALUES
(2, '2,10'),
(10, '2,10')
(3, '7,3');
看起来像这样:
id | values
-----------
2 | 2,10
10 | 2,10
3 | 7,3
第一列是从values列中搜索的整数。
注意:示例过于简单,看起来很愚蠢。重构表结构不是办法。只有带有标准函数和过程的sql查询。
我想在字符串中搜索整数值,用,分隔符连接整数。
我希望 MySQL 使用 IN 运算符来执行此操作:
选择编号
FROM n_dummy
ID 在哪里(values);
结果将是2、10 和3。但是 MySQL 只返回2,第二个和其他值不能用 IN 运算符和字符串搜索。
如何使用 sql-query 和 prebuild 例程在连接字符串中搜索整数?
【问题讨论】:
-
在关系数据库中这样做,
looks stupid;同意。 -
问题是非常大的查询(%)的过于简化的版本,它由大量的子查询组成,所以实际的表是动态创建的,而不是插入语句。
-
对我来说问题的主要目的是知道,如何在动态创建的与分隔符字符串连接的整数中找到整数(它是通过
CONCAT_WS函数和许多CASE运算符形成的,而不是普通的sql-查询) -
sqlfiddle 似乎对我不起作用
-
Sqlfiddle 稳定性的一些问题...