相关文章推荐
爱旅游的遥控器  ·  System.Runtime.Interop ...·  11 月前    · 
豪爽的西装  ·  vue中setInterval咋用 - ...·  1 年前    · 
豪气的炒饭  ·  sudo permission in ...·  1 年前    · 

小弟的系統中有一個欄位是nvarchar(250),現在有一個報表需要將這個欄位拆成二段,分段點是第一個Enter Key,請教各位網大該如何在T-SQL中下指令呢?謝謝!!

如果判斷Enter改為判斷','會不會比較好做?謝謝!!

insert into @Tmp values('1' + char(13) + char(10) + 'test1') ,('22' + char(13) + char(10) + 'test2') ,('333' + char(13) + char(10) + 'test2') select * ,Convert(int,left(Test,CharIndex(char(13),Test) - 1)) as Enter_Key ,right(Test,len(Test) - CharIndex(char(10),Test)) as Enter_Data from @Tmp

你好,請問一下:執行的時候出現error: Invalid length parameter passed to the LEFT or SUBSTRING function.
應該是那一個部份的問題?
我改寫的是這樣:
SELECT CONVERT(NVARCHAR(100),LEFT(SO.ADDRESS,CHARINDEX(CHAR(13),SO.ADDRESS)-1)) AS 'BillTo',
RIGHT(SO.Address,LEN(SO.Address) - CHARINDEX(CHAR(10),SO.Address)) AS 'BillToAds'

你可以參考這個
https://dotblogs.com.tw/shadow/2011/07/02/30968
你如果是sql server 2016的話可以用內建函數string_split()
https://docs.microsoft.com/zh-tw/sql/t-sql/functions/string-split-transact-sql?view=sql-server-2017
分割符號我覺得用','或'|'會比Enter Key好

我剛剛看到另一篇更好的不用寫成函數
https://social.msdn.microsoft.com/Forums/zh-TW/8f273325-7b57-451e-8f66-11ef3162010f/2035129992sql3548627861209982110623383200182183938988?forum=240

自己有測試一下還蠻好用的

Declare @str As varchar(100)
Set @str='123*456'
SELECT 
	SUBSTRING(@str, 1, CHARINDEX('*', @str) - 1),
	SUBSTRING(@str, CHARINDEX('*', @str) + 1, LEN(@str) - CHARINDEX('*', @str))