SQL Server:仅在找到子字符串时显示整个字段

问题描述 投票:0回答:1

使用SQL Sever2016。我受无法创建函数或存储过程的事实所束缚。我正在尝试在表格的许多字段中找到%word%(75)。现在,我有一大堆

和(fieldname1像%word%或fieldname2,例如%word%或fieldname3,例如%word%)等。

虽然很麻烦,但这确实为我提供了正确的结果。但是,1)我想简化此操作,2)在select中,我希望在且仅当找到%word%时才显示整个字段(甚至只显示列名也可以)。

谢谢您的任何想法。

sql sql-server tsql sql-like
1个回答
0
投票

一个选项使用cross apply取消旋转表,然后搜索:

select v.*
from mytable t
cross apply (values 
    ('fieldname1', fieldname1), 
    ('fieldname2', fieldname2),
    ('fieldname3', fieldname3)
) v(fieldname, fieldvalue)
where v.fieldvalue like '%word%'

请注意,如果包含搜索词的列超过一列,您将在结果集中获得几行。我不确定您要如何处理此用例(有选项)。

© www.soinside.com 2019 - 2024. All rights reserved.