2012-01-18 36 views
0

OK,所以我想,爲了在SQL Server中使用它們的PIVOT從數據庫轉義特殊字符的SQL Server 2005在使用COALESCE

declare @selectlist varchar(max) 

SELECT @selectlist = COALESCE(@selectlist + ',[' + listitem + ']','['+ listitem +']') 
FROM (select distinct listitem from Project#lists where listitem <> '') X 
ORDER BY listitem 

合併一些記錄2005年的問題是,數據中有各種各樣的古怪...單引號,括號,%s,{'s和誰知道還有什麼。是否有一種簡單的方法來逃避它們,還是我必須替換所有東西?

(我想過寫一個裝配有一個正則表達式來做到這一點,但我把這個交給誰可能會或可能不會有需要/設置此客戶)

+0

爲什麼你需要跳過單引號,百分號,大括號?如果您使用括號作爲分隔符,則只需要跳過右括號,並說任何其他字符都不是特殊的。或者你打算以某種方式使用結果,而你無法控制哪些字符意味着什麼?無可否認,我不熟悉你提到的關鍵點,但是看起來,它似乎根本不會拆分字符串,所以你必須意味着與我發現的不同。 – hvd

+0

謝謝你的回答,hwd,但是因爲我只有2小時左右的經驗,所以你需要指定非數字值作爲數據透視表的列是充滿危險的......列名最大的那個是裸露的,沒有引用字符串(就像我習慣的那樣)。 – weloytty

回答

2

你試過QUOTENAME?如果您需要進行更廣泛的修改,那麼我不確定是否有內置函數可以爲您執行此操作。

+0

感謝您的幫助,但quotename不工作......我擔心我將不得不單獨逃避事情。 – weloytty