如何从逗号分隔值字段中选择数据行

how to select data row from a comma separated value field(如何从逗号分隔值字段中选择数据行)
本文介绍了如何从逗号分隔值字段中选择数据行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的问题与此问题不完全相似

How to SELECT parts from a comma-separated field with a LIKE statement

但我在那里没有看到任何答案。因此,我再次发布我的问题。

我有下表

╔════════════╦═════════════╗
║ VacancyId  ║  Media      ║
╠════════════╬═════════════╣
║     1      ║ 32,26,30    ║
║     2      ║ 31, 25,20   ║
║     3      ║ 21,32,23    ║
╚════════════╩═════════════╝

我要选择介质ID=30、介质=21或介质=40的数据

所以在本例中,输出将返回第一行和第三行。

我如何才能做到这一点?

我尝试了像‘30’这样的媒体,但没有返回任何值。另外,我只需要在该字段中搜索一个字符串。

我的数据库是SQL Server

谢谢

推荐答案

如果可行,使用逗号分隔值存储在数据库中从来都不好,请尝试创建单独的表来存储它们,因为这很可能是1:n关系。

如果这是不可行的,那么有以下可能的方法可以做到这一点, 如果要匹配的值数将保持不变,则可能需要根据您的要求执行Like语句系列和OR/AND语句。

例如-

WHERE
    Media LIKE '%21%'
    OR Media LIKE '%30%'
    OR Media LIKE '%40%' 
但是,上面的查询可能会捕获包含21的所有值,因此即使值为1210210的列也会返回。要克服这个问题,您可以使用以下技巧,这会影响性能,因为它使用where子句中的函数,这不利于进行Seargable查询。 但它开始了

--Declare valueSearch variable first to value to match for you can do this for multiple values using multiple variables.

Declare @valueSearch = '21'

-- Then do the matching in where clause
WHERE 
    (',' + RTRIM(Media) + ',') LIKE '%,' + @valueSearch + ',%'

如果要更改要匹配的值的数量,那么您可能需要查看FullText Index,并且应该考虑同样的问题。 如果您在Fulltext Index之后决定使用此选项,您可以执行以下操作以获得您想要的内容,

例如-

WHERE 
     CONTAINS(Media, '"21" OR "30" OR "40"')

这篇关于如何从逗号分隔值字段中选择数据行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Execute complex raw SQL query in EF6(在EF6中执行复杂的原始SQL查询)
SSIS: Model design issue causing duplications - can two fact tables be connected?(SSIS:模型设计问题导致重复-两个事实表可以连接吗?)
SQL Server Graph Database - shortest path using multiple edge types(SQL Server图形数据库-使用多种边类型的最短路径)
Invalid column name when using EF Core filtered includes(使用EF核心过滤包括时无效的列名)
How should make faster SQL Server filtering procedure with many parameters(如何让多参数的SQL Server过滤程序更快)
How can I generate an entity–relationship (ER) diagram of a database using Microsoft SQL Server Management Studio?(如何使用Microsoft SQL Server Management Studio生成数据库的实体关系(ER)图?)