【问题标题】:SSRS selecting results based on comma delimited list with like statementSSRS 基于逗号分隔列表和like 语句选择结果
【发布时间】:2018-05-01 04:42:04
【问题描述】:

基于我的问题SSRS selecting results based on comma delimited list

是否可以这样做,但不是以EQUALS 的形式这样做,可以按如下方式进行吗?
WHERE value like 'abc%','def%'

需要注意的一点是% 不包含在列表中。

【问题讨论】:

  • 编辑您的问题并提供示例数据和所需结果。这个问题完全不清楚,特别是因为引用的问题没有EQUALS
  • WHERE value like 'abc%' or value like 'def%' 应该可以工作
  • @MiguelH 将传入逗号分隔值列表,因此这是不可能的
  • @peterbonar 将其拆分为临时表/子查询,然后将 join 的主要结果集设置为 on main.blah like tmp.split

标签: sql sql-server sql-server-2008 reporting-services


【解决方案1】:

一种选择是将传入的 SSRS 变量 (CSV) 拆分为一个表并加入该表

DECLARE @tab TABLE (Col1 NVARCHAR(200))
INSERT INTO @tab (Col1)
VALUES (N'abc'),(N'def'),(N'xyz'),(N'nop'),(N'ghi'),(N'lmn')

DECLARE @substrings NVARCHAR(200) = 'abc,def,ghi'

;WITH cteX
AS(   --dynamically split the string
    SELECT Strings = y.i.value('(./text())[1]', 'nvarchar(4000)')
    FROM 
    ( 
    SELECT x = CONVERT(XML, '<i>' 
        + REPLACE(@substrings, ',', '</i><i>') 
        + '</i>').query('.')
    ) AS a CROSS APPLY x.nodes('i') AS y(i)
) 
SELECT
    T.*
FROM @tab   T
INNER JOIN cteX X ON X.Strings = T.Col1

给出以下结果

【讨论】:

    猜你喜欢
    • 2018-03-09
    • 2011-07-16
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    相关资源
    最近更新 更多