SQL Server:使用动态列名作为PATINDEX()中的表达式

时间:2015-01-27 00:54:00

标签: sql sql-server tsql

我想做这样的事情

DECLARE @ColumnName varchar(400) = 'name'
SELECT PATINDEX ('%b%', @ColumnName)  AS Test FROM Table

我遇到的问题是PATINDEX表达式正在使用文字"名称"作为源而不是列中的数据。有没有办法使用动态变量作为列本身?

2 个答案:

答案 0 :(得分:0)

要做这样的事情,你需要使用动态SQL。

DECLARE @SQL VarChar(2000)
DECLARE @ColumnName VarChar(400) = 'name'

SET @SQL = 'SELECT PATINDEX(''%b'',' + @ColumnName + ') AS Test FROM Table'

EXEC (@SQL)

答案 1 :(得分:-1)

不清楚你在问什么。我的解释

SELECT PATINDEX('%b%',column_name)AS Test FROM information_schema.columns where table_name =' Table'