UPDATE/EDIT
CRLF是回車/換行的簡稱。這是古代的術語,大部分在詞的字面意義上被棄用。
對於「現代」系統,沒有回車,即使沒有給出該命令,新的文本從左側開始。有些程序在按下輸入時總是提供完整的CRLF,但也有程序只發送換行符。然後是最糟糕的一種,當用文本結束一行時,給出完整的CRLF,但當剩下的行爲空時,只有一個換行符。這在技術上是一種「最優化」,因爲嘿,爲什麼當它從未離開起始位置時「歸還馬車」。
這就是所有非常好,但你如何解決它?
將全部字符(13)全部替換爲char(10)後面的全部字符。 )
編輯完
我試過你的描述到底是什麼,請參見下面的代碼示例;在如何做到這一點,因爲如果你弄錯了,你可能會去上一個循環indefinitly插入CRLFs仔細看。它應該像你描述的那樣工作。對於一些額外的測試,我甚至會將換行符作爲帶引號的文本插入,起作用。即使數據類型的文本,這是我的第一次猜測可能行爲不端行爲似乎完全支持這一點。我在2012年第一次在自己的系統上運行了這個功能,但是在2008年實現了您的問題,因此我在2008年的小提琴上測試了它,並得到了相同的結果。
結論:這個問題是不是在選擇上換行符PATINDEX;)
create table crlf_test (id int identity(1,1), nstring nvarchar(100), string varchar(100), n_text ntext)
insert crlf_test (nstring, string, n_text) values
('a'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)+'b','a'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)+'b','a'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)+'b'),
('a
b','a
b','a
b')
select * from crlf_test
select patindex('a'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)+'b', nstring)
, patindex('a'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)+'b', string)
, patindex('a'+CHAR(13)+CHAR(10)+CHAR(13)+CHAR(10)+'b', n_text)
from crlf_test
select patindex('a
b', nstring)
, patindex('a
b', string)
, patindex('a
b', n_text)
from crlf_test
請參閱編輯 – MSI 2014-09-03 23:59:37
我會接受你的編輯:)。乾杯 – MSI 2014-09-05 03:57:25