XML Special Characters
-- Declare variables
DECLARE @lxml_value XML;
-- Set XML values
SET @lxml_value = '<Detail>
<Name>Testing XML & Special Characters</Name>
<Name>222222</Name>
<Address>Test XML's address</Address>
<Quote>"Quote"</Quote>
<Compare1>10 < 20</Compare1>
<Compare2>10 > 5</Compare2>
</Detail>'
-- Select vales from XML
SELECT @lxml_value.value('(/Detail/Name) [1]', 'VARCHAR(100)');
SELECT @lxml_value.value('(/Detail/Name) [2]', 'VARCHAR(100)');
SELECT @lxml_value.value('(/Detail/Address) [1]', 'VARCHAR(100)');
SELECT @lxml_value.value('(/Detail/Quote) [1]', 'VARCHAR(100)');
SELECT @lxml_value.value('(/Detail/Compare1) [1]', 'VARCHAR(100)');
SELECT @lxml_value.value('(/Detail/Compare2) [1]', 'VARCHAR(100)');
Update XML Node
-- Create a schema for your XML data
CREATE XML SCHEMA COLLECTION my_xml_schema
AS
'<xsd:schema elementFormDefault="unqualified" attributeFormDefault="unqualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Transaction">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Type" type="xsd:string"/>
<xsd:element name="Code" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>'
GO
-- Declare variables
DECLARE @lv_type VARCHAR(10);
DECLARE @lxml_data XML(my_xml_schema); -- Declare this using the schema created above
-- Set change value
SET @lv_type = 'Change';
-- Set the XML data
SET @lxml_data = '<Transaction>
<Type>Node Type</Type>
<Code>Node Code</Code>
</Transaction>';
-- Check XML data
SELECT @lxml_data;
-- Modify the XML data
SET @lxml_data.modify('replace value of (/Transaction [1]/Type [1]) with sql:variable("@lv_type")');
-- Check XML data
SELECT @lxml_data;
-- Drop XML schema
DROP XML SCHEMA COLLECTION my_xml_schema
GO
Select XML Node Values from XML Field
-- Declare variables
DECLARE @lxml_value XML;
-- Create table with XML colum
CREATE TABLE tmp_xml (xml_col XML);
-- Set XML variables
SET @lxml_value = '<Transaction>
<Node1>Value 1</Node1>
<Node2>Value 2</Node2>
<Node3>Value 3</Node3>
<Node4>Value 4</Node4>
<Node5>Value 5</Node5>
</Transaction>';
-- Insert XML file into temp table
INSERT INTO tmp_xml
(xml_col)
VALUES (@lxml_value);
-- Select the results from XML nodes
SELECT tt.xml_col.value('(/Transaction/Node1) [1]', 'VARCHAR(10)') xml_node_1,
tt.xml_col.value('(/Transaction/Node2) [1]', 'VARCHAR(10)') xml_node_2,
tt.xml_col.value('(/Transaction/Node3) [1]', 'VARCHAR(10)') xml_node_3,
tt.xml_col.value('(/Transaction/Node4) [1]', 'VARCHAR(10)') xml_node_4,
tt.xml_col.value('(/Transaction/Node5) [1]', 'VARCHAR(10)') xml_node_5
FROM dbo.tmp_xml tt;
-- Drop temp table
DROP TABLE tmp_xml;
Select Records Into XML Structure
Table Table1:
id name des
----------- -------------------------------------------------- --------------------------------------------------
1 Cổ trục máy nghiền nhiều chiều nay mưa trên phố huế
2 ví dụ dùng SQL vãi hàng
3 Bạn chỉ cần search trong database xem chạy đua tốc độ
4 gần đúng có trên internet rất nhiều tình không biên giới
5 Thuật toán tìm kiếm gần đúng 1 xâu mãi mãi 1 tình yêu
6 nhiều lắm ấy chiều mưa bong bóng
SELECT *
FROM Table1
FOR XML AUTO, ROOT;
--FOR XML PATH ('Element')
→ Out put:
<root> <Table1 id="1" name="Cổ trục máy nghiền nhiều" des="chiều nay mưa trên phố huế" /> <Table1 id="2" name="ví dụ dùng SQL" des="vãi hàng" /> <Table1 id="3" name="Bạn chỉ cần search trong database xem" des="chạy đua tốc độ" /> <Table1 id="4" name="gần đúng có trên internet rất nhiều" des="tình không biên giới" /> <Table1 id="5" name="Thuật toán tìm kiếm gần đúng 1 xâu" des="mãi mãi 1 tình yêu" /> <Table1 id="6" name="nhiều lắm ấy" des="chiều mưa bong bóng" /></root>