首页 > 解决方案 > 像字符串一样查询Sql

问题描述

我需要 sql 查询 LIKE 的帮助。数据库中列的值如下:

 record 1 : "3,13,15,20"
 record 2 : "13,23,14,19"
 record 3 : "3,14,15,19,20"......

现在我想获得值为 3 的最准确记录这是我的查询:

SELECT * FROM accounts where type like '%3%' 

此查询将发现所有值为 '3' 的记录,例如:13,23 ...。它不能解决我的问题。

标签: sqlsql-like

解决方案


尝试这个:

SELECT *
FROM accounts
WHERE CONCAT(',', type, ',') LIKE '%,3,%';

在此处输入图像描述

演示

这个技巧将逗号放在typeCSV 字符串的末尾,因此我们所要做的就是检查,3,该字符串中的任何位置。

顺便说一句,通常不希望将这样的 CSV 数据存储在 SQL 表中。相反,请考虑规范化您的数据并将这些 CSV 值存储在不同的行中。


推荐阅读