調試存儲過程時,往往可以用print將存儲過程中的變數print出來, 但是print出來的字元串有一定長度限制,剛纔專門試了一下,應該是4000個字元 如果超過4000個字元,超長的字元會被自動截斷,這一點應該比較清楚。 對於超過4000的字元串沒辦法print出來的時候,往往可以選擇select ...
調試存儲過程時,往往可以用print將存儲過程中的變數print出來,
但是print出來的字元串有一定長度限制,剛纔專門試了一下,應該是4000個字元
如果超過4000個字元,超長的字元會被自動截斷,這一點應該比較清楚。
對於超過4000的字元串沒辦法print出來的時候,往往可以選擇select @v_str這種方式,將後臺的字元串select出來,然後粘貼出來查看
但是今天發現不好使了,
註意字元串是"aaaaa…………bbbbb",結尾時bbbbb
我隨意定義一個超級長的字元串,可以看出來len是87049,同時用select @str 給他select 出來
但是我從查詢結果select @str的結果中,將這個字元串複製出來之後,字元串的長度就被截斷了,我從上面select出來的結果中複製
新貼到一個查詢視窗中,發現結尾不是上面定義時候的bbbbb,如截圖,通過select len這個欄位,發現是長度是43677
因為今天遇到了類似的問題,調試存儲過程的時候,對於存儲過程中處理的字元串,因為print會被截斷,那麼就select出來,
然後複製select出來的結果到一個新視窗中,發現字元串結尾跟處理字元串的邏輯對不上,
比如我對字元串的處理是以分號結尾,實際上select出來然後粘貼出來查看,根本不是以分號結尾,
而處理字元串的邏輯又很簡單,斷定可以不會有bug,
那麼肯定是從select中複製然後粘貼的時候出的錯。
尼瑪我一開始試了n多次啊,簡直不敢相信自己的眼睛。
後面就乾脆試一下,對於結果取len是沒有問題的,長字元串select出來,然後再複製粘貼出來,中間就被截斷了。
單獨地複製SSMS查詢視窗中原始的字元串,也是沒有問題的。
這個怎麼解釋,還請高人指點一下。