【问题标题】:Mysql search in concatinated stringMysql在连接字符串中搜索
【发布时间】: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

Fiddle included.

第一列是从values列中搜索的整数。

注意:示例过于简单,看起来很愚蠢。重构表结构不是办法。只有带有标准函数和过程的sql查询。

我想在字符串中搜索整数值,用,分隔符连接整数。

我希望 MySQL 使用 IN 运算符来执行此操作: 选择编号 FROM n_dummy ID 在哪里(values);

结果将是2103。但是 MySQL 只返回2,第二个和其他值不能用 IN 运算符和字符串搜索。

如何使用 sql-query 和 prebuild 例程在连接字符串中搜索整数?

【问题讨论】:

  • 在关系数据库中这样做,looks stupid;同意。
  • 问题是非常大的查询(%)的过于简化的版本,它由大量的子查询组成,所以实际的表是动态创建的,而不是插入语句。
  • 对我来说问题的主要目的是知道,如何在动态创建的与分隔符字符串连接的整数中找到整数(它是通过CONCAT_WS 函数和许多CASE 运算符形成的,而不是普通的sql-查询)
  • sqlfiddle 似乎对我不起作用
  • Sqlfiddle 稳定性的一些问题...

标签: mysql where-in sql-in


【解决方案1】:

试试这个兄弟

SELECT * FROM `n_dummy` WHERE concat(',',`values`,',') LIKE concat('%',',',`id`,',','%')

【讨论】:

    猜你喜欢
    • 2013-05-02
    • 2016-11-20
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 2011-12-14
    • 2013-01-28
    • 1970-01-01
    • 2019-05-06
    相关资源
    最近更新 更多