如何在逗号分隔值的条件下使用sql

时间:2019-02-22 13:08:59

标签: sql

| id | name    | numbers        |
+----+---------+----------------+
| 1  | arjun   | 62,45,68,95,50 |
| 2  | yuvaraj | 45,65,85,68    |
| 3  | sahadev | 45,65,85,68    |
| 4  | yogi    | 45,65,85,68    |
| 5  | krishna | 45,65,85,68    |

我想要编号为45的id数据

我尝试过

select * 
from table 
where number=45

但它不起作用。

5 个答案:

答案 0 :(得分:1)

如果使用like运算符,它将获得所有包含45的记录(例如345或12245或65445)。如果希望记录的值正好为“ 45”,则在使用SQL Server 2016或更高版本时,可以尝试以下代码。

select * from (
SELECT * FROM tablename
cross apply
STRING_SPLIT('numbers',',') )a where value='45'

答案 1 :(得分:1)

使用like

select * from table where concat(',', numbers, ',') like concat('%,', '45',',%')

因为您需要将列的值转换为如下形式:

,45,65,85,68,

,然后将like应用于模式'%,45,%'

答案 2 :(得分:0)

您可以尝试使用类似运算符

select * from table where number like '%45%'

或者您可以对MySQL数据库使用find_in_set()

select * from table where find_in_set(45,number)>0 

答案 3 :(得分:0)

使用类似运算符,且模式为'%45%':

select * from table where numbers like '%45%'

答案 4 :(得分:0)

对于Postgres,您可以使用:

{
    "contexts": [
      "shop"
    ],
    "lang": "en",
    "query": "Hello, How are you",
    "parameters" : {"d": "s"},
    "sessionId": "12345",
    "timezone": "America/New_York",
    "data" : {"paramerter_one": "parameter_one_pair"}
 }