jump to navigation

Menggabungkan isi field menjadi satu String di MS SQL 2005 April 21, 2010

Posted by layyuddi in SQL.
Tags: ,
trackback

Ketika kita membutuhkan data dari isi kolom menjadi satu string. Kita bisa menggunakan sintak for xml.

Contohnya saya akan menggabungkan isi dari field name pada sys.databases :

select Name from sys.databases where database_id > 4

Name
Temp
Liquibase
NorthWind
EMPLOYEES

Dengan query berikut kita bisa menggabungkan nama tersebut :
select
stuff(
(select ', ' + name -- Note the lack of column name
from sys.databases
where database_id > 4
order by name
for xml path('')
)
, 1, 2, '') as Namelist;

Namelist
EMPLOYEES, Liquibase, NorthWind, Temp

Bagaimana jika kita ingin menambahkan tanda kurung siku pada setiap nama seperti berikut: <EMPLOYEES>, <Liquibase>, <NorthWind>, <Temp>

Jika kita menggunakan syntax seperti diatas :

select
stuff(
(select ', <' + name + '>'
from sys.databases
where database_id > 4
order by name
for xml path('')
)
, 1, 2, '') as namelist;

Hasilnya tanda < dan > muncul menjadi &lt dan &gt  :

namelist
&lt;EMPLOYEES&gt;, &lt;Liquibase&gt;, &lt;NorthWind&gt;, &lt;Temp&gt;

Untuk mengatasi itu, kita bisa menambahkan sedikit syntak forxml nya. Berikut querynya :

select
stuff(
(select ', <' + name + '>'
from sys.databases
where database_id > 4
order by name
for xml path(''), root('MyString'), type
).value('/MyString[1]','varchar(max)')
, 1, 2, '') as namelist;

atau

select
stuff(
(select ', <' + name + '>'
from sys.databases
where database_id > 4
order by name
for xml path(''), type
).value('(./text())[1]','varchar(max)')
, 1, 2, '') as namelist

Hasilnya :

namelist
<EMPLOYEES>, <Liquibase>, <NorthWind>, <Temp>

Komentar»

No comments yet — be the first.

Tinggalkan Balasan

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Ubah )

Twitter picture

You are commenting using your Twitter account. Log Out / Ubah )

Facebook photo

You are commenting using your Facebook account. Log Out / Ubah )

Connecting to %s

Ikuti

Get every new post delivered to your Inbox.

Bergabunglah dengan 128 pengikut lainnya.