我在T-SQL中有一個變量@ColumnnName
用戶定義函數基本上包含列名稱。在TSQL中變量的值LEN
例如:
declare @ColumnnName= 'firstName'
這意味着我在我的表有名稱firstName
一列,並具有存儲在變量此列名命名@ColumnnName
。
我有一個這樣的查詢:
Insert into @Temp([Row], VarLength) select Rowid, LEN(@ColumnnName) from Patients
where
/
*rest of code
*/
在上面的查詢,LEN(@ColumnnName)
將返回9
其的firstName但不包含在列的firstName的值的長度。
如何獲取包含firstName列的值的長度而不是字符串firstName本身的長度。
編輯:
完整的查詢是這樣的:如果你想使用上述CASE
表達更
INSERT INTO @Temp([Row], VarLength)
SELECT Rowid, CASE WHEN @ColumnnName = 'FirstName' THEN LEN(FirstName)
WHEN @ColumnnName = 'LastName' THEN LEN(LastName)
... etc
END AS len
FROM Patients
... etc
:
Insert into @Temp([Row], Counts, VarLength) select Rowid, @counter, LEN(@ColumnnName) from Patients where
(case when @ColumnnName = 'firstname' then firstname
when @ColumnnName = 'middlename' then middlename
when @ColumnnName = 'lastname' then lastname
when @ColumnnName = 'State' then [State]
when @ColumnnName = 'City' then City
when @ColumnnName = 'StreetName' then StreetName
when @ColumnnName = 'StreetType' then StreetType end) LIKE SUBSTRING(@parameterFromUser, 1, @counter) + '%'
我認爲你需要動態SQL來實現你想要的。問題是你不能使用UDF中的動態SQL。 –
@GiorgosBetsos:的確如此。必須有一些替代方案嗎? – Simran
一些醜陋的'CASE'構造檢查'@ ColumnnName'的所有可能的值? –