mssql 2008 stored procedure split string

บน mssql 2008 ไม่มี split() ให้ใช้ ผมเลยหาเจออันนี้ คิดว่าน่าจะแทนได้ เลยลองทำดู
ถ้าไม่มี   SET @v = @v+@x +';'
ค่อย ๆ print @x ออกมาเลย จะได้ค่า ข้างในเป็น
10
12.5
33
ตามลำดับ แต่พอต้องการให้มัน Join ออกมาเป็น string เดียว เพื่อผมจะไปหา WHERE [FieldDetail] like '.5%33%'
คำถาม : ไม่ทราบว่า   SET @v = @v+@x +',' มันผิดทำให้เป็น null หรือเปล่าครับ? ต้องแก้ไขอย่างไร

DECLARE @v varchar(max)
DECLARE @x varchar(20)
  declare @xml xml
  set @xml = N'<root><r>' + replace('10,12.5,33',',','</r><r>') + '</r></root>'
  --print cast(@xml as varchar(max))
  DECLARE C cursor for 
  select
    r.value('.','varchar(max)') as item
  from @xml.nodes('//root/r') as records(r)
  OPEN C
  fetch next from C into @x
  WHILE (@@FETCH_STATUS = 0)
  BEGIN
  print @x
  SET @v = @v+@x +','

  fetch next from C into @x
  END
  CLOSE C
  DEALLOCATE C
  --PRINT LEFT(@x,LEN(@x)-1)
  print @v -- อยากได้ 10,12.5,33

แก้ไขข้อความเมื่อ
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 3
DECLARE @v varchar(max) = '';

หรือ

SET @v = ISNULL(@v, '') + ISNULL(@x, '') +','
แสดงความคิดเห็น
Preview
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่