SQL Server:检查列中是否存在特定的字符串

时间:2018-12-11 17:46:06

标签: sql sql-server if-statement dynamic case

有用户创建的表类型:

CREATE TYPE [dbo].[tpSearchCriteria] AS TABLE(
    [TableName] [sysname] NOT NULL,
    [ColumnName] [sysname] NOT NULL,
    [ValueString] [nvarchar](max) NULL,
    [ValueNumeric] [decimal](19, 6) NULL,
    [ValueDate] [datetimeoffset](7) NULL,
    [Operator] [nvarchar](2) NULL,
    [OperatorGroup] [smallint] NOT NULL,
    [SortDirection] [nvarchar](2) NULL )

每次执行查询时,此表都会填充一些搜索参数。 根据列[ColumnName]中的字符串值,我应该选择其他排序规则。 因此,需要检查[ColumnName]中是否包含“ FirstName”或“ LastName”之类的值

我尝试了一些CASE和IF子句,但是没有用。

使用SQL Server 2014的系统

1 个答案:

答案 0 :(得分:0)

select @Collation = case when exists (select 1 from @SearchCriteria where ColumnName = 'FirstName' or ColumnName = 'Surname')
                         then COALESCE(@Collation, CAST(DATABASEPROPERTYEX(DB_NAME(), 'Collation') AS nvarchar))
                   else COALESCE('SQL_Latin1_General_CP1_CI_AS', CAST(DATABASEPROPERTYEX(DB_NAME(), 'Collation') AS nvarchar))
                   end