<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>นพ ภิญโญวาณิชกะ &#187; MSSQL</title>
	<atom:link href="http://www.nop.in.th/category/database/mssql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nop.in.th</link>
	<description>Nop Pinyowanichaka &#124; ก้าวสั้นๆ ในวันเบาๆ ของผม</description>
	<lastBuildDate>Tue, 29 Nov 2011 06:34:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>MSSQL Dateformat การจัดรูปแบบการแสดงผลวันที่ใน MSSQL</title>
		<link>http://www.nop.in.th/database/mssql/mssql-date-format/</link>
		<comments>http://www.nop.in.th/database/mssql/mssql-date-format/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 11:07:36 +0000</pubDate>
		<dc:creator>นพ</dc:creator>
				<category><![CDATA[MSSQL]]></category>

		<guid isPermaLink="false">http://www.nop.in.th/?p=253</guid>
		<description><![CDATA[คราวที่แล้วเขียน SP สร้าง ตารางวันที่ แต่ไอ้ตอนที่แปลง Format มันแปลง ดุ้นๆ ไปไม่ค่อยเวิ๊ก อันนี้เป็นการจัด Format Datetime อย่างเป็นทางการ อันนี้เป็น format นี้ 05-04-2008 SELECT CONVERT(varchar(10), getdate()+1, 105) อันนี้เป็น format นี้ 05/04/2008 SELECT CONVERT(varchar(10), getdate()+1, 103) ปล. ที่ต้อง +1 ให้กับ getdate() ก็เพราะว่า มันเป็นวันที่ 4 เดือน 4 เดี๋ยวจะงง]]></description>
			<content:encoded><![CDATA[<p>คราวที่แล้วเขียน SP สร้าง ตารางวันที่ แต่ไอ้ตอนที่แปลง Format มันแปลง ดุ้นๆ ไปไม่ค่อยเวิ๊ก อันนี้เป็นการจัด Format Datetime อย่างเป็นทางการ</p>
<p>อันนี้เป็น format นี้ 05-04-2008</p>
<pre lang="sql">SELECT CONVERT(varchar(10), getdate()+1, 105)</pre>
<p>อันนี้เป็น format นี้ 05/04/2008</p>
<pre lang="sql">SELECT CONVERT(varchar(10), getdate()+1, 103)</pre>
<p>ปล. ที่ต้อง +1 ให้กับ getdate() ก็เพราะว่า มันเป็นวันที่ 4 เดือน 4 เดี๋ยวจะงง</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nop.in.th/database/mssql/mssql-date-format/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>การเอา Textfile เข้า Temptable ด้วย MSSQL</title>
		<link>http://www.nop.in.th/database/mssql/import-textfile-to-table-with-mssql/</link>
		<comments>http://www.nop.in.th/database/mssql/import-textfile-to-table-with-mssql/#comments</comments>
		<pubDate>Wed, 26 Mar 2008 07:21:57 +0000</pubDate>
		<dc:creator>นพ</dc:creator>
				<category><![CDATA[MSSQL]]></category>

		<guid isPermaLink="false">http://www.nop.in.th/?p=252</guid>
		<description><![CDATA[การเอา Textfile เข้า ฐานข้อมูล MSSQL จริงๆ ไม่ต้องใช้ Temptable ก็ได้ ถ้าใช้บ่อย สร้างเป็นถาวรก็น่าจะใช้งานได้ง่ายกว่า แต่สำหรับผมเองผมว่าเอาเข้า Temptable ไว้ก่อน แล้วค่อยเอามาใช้จริงๆ แต่สำหรับการเขียน Webที่ Connection เปิดหนึ่งครั้ง ปิดหนึ่งครั้ง Temptable ก็หายไปบางครั้งก็คงไม่เหมาะ ขั้นแรกก็สร้าง Temptable ซะก่อน ด้วยคำสั่ง Create table ธรรมดานี่แหละครับ เพียงแต่ใส่ # ไว้ข้างหน้าเพื่อบอกว่าเป็น Temptable CREATE TABLE #tempdata ( id varchar(4), usr VARCHAR(100), pwd VARCHAR(100) ) โครงสร้างไฟล์ text ที่จะเอาเข้าจะเป็นแบบนี้ 1,pixelbar,123 2,pixelable,1234 3,iopixel,123 ซึ่งจะเรียงก็จะเป็น id,username,password จากนั้นเราจะเอา text file [...]]]></description>
			<content:encoded><![CDATA[<p>การเอา Textfile เข้า ฐานข้อมูล MSSQL จริงๆ ไม่ต้องใช้ Temptable ก็ได้ ถ้าใช้บ่อย สร้างเป็นถาวรก็น่าจะใช้งานได้ง่ายกว่า แต่สำหรับผมเองผมว่าเอาเข้า Temptable ไว้ก่อน แล้วค่อยเอามาใช้จริงๆ แต่สำหรับการเขียน Webที่ Connection เปิดหนึ่งครั้ง ปิดหนึ่งครั้ง Temptable ก็หายไปบางครั้งก็คงไม่เหมาะ</p>
<p>ขั้นแรกก็สร้าง Temptable ซะก่อน ด้วยคำสั่ง Create table ธรรมดานี่แหละครับ เพียงแต่ใส่ # ไว้ข้างหน้าเพื่อบอกว่าเป็น Temptable</p>
<pre lang="SQL" line="1">CREATE TABLE #tempdata (
id varchar(4),
usr VARCHAR(100),
pwd VARCHAR(100)
)
</pre>
<p><span id="more-141"></span></p>
<p>โครงสร้างไฟล์ text ที่จะเอาเข้าจะเป็นแบบนี้</p>
<p>1,pixelbar,123<br />
2,pixelable,1234<br />
3,iopixel,123</p>
<p>ซึ่งจะเรียงก็จะเป็น id,username,password</p>
<p>จากนั้นเราจะเอา text file เข้า สมมุติมันอยู่ใน Drive C ของ Server ชื่อไฟล์ abc.csv</p>
<pre lang="SQL" line="1">
BULK INSERT #tempdata

FROM 'c:\abc.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
</pre>
<p>แค่นี้เราก็สามารถ select ดูข้อมูลได้แล้วครับ จะเอา้ข้อมูลไป Insert ต่อ หรือว่า จะไปปู้ยี่ปู้ยำอะไรก็ได้ สบายๆครับ</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nop.in.th/database/mssql/import-textfile-to-table-with-mssql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>เขียน MSSQL store procedure เพื่อทำ Crosstab หรือ Pivot Table</title>
		<link>http://www.nop.in.th/database/mssql/create-mssql-2000-crosstab/</link>
		<comments>http://www.nop.in.th/database/mssql/create-mssql-2000-crosstab/#comments</comments>
		<pubDate>Wed, 26 Mar 2008 03:56:51 +0000</pubDate>
		<dc:creator>นพ</dc:creator>
				<category><![CDATA[MSSQL]]></category>

		<guid isPermaLink="false">http://www.nop.in.th/?p=251</guid>
		<description><![CDATA[เขียน MSSQL store procedure เพื่อทำ Crosstab หรือ Pivot Table วันก่อน มีโอกาสต้องเขียน การแสดงผลข้อมูลเป็นแบบ แนวนอน หรือที่เค้าเรียกกันว่า Crosstab แต่เนื่องด้วย ฐานข้อมูลที่ใช้ มันเป็น MSSQL 2000 มันไม่มีพวก Pivot Table มาให้ (Access ยังมีเลย) เลยต้องหาเอาเอง ไปเจอเว็บนึงเค้า เขียนเป็น Store Procedure ไว้ เอามาใช้ Work เลยทีเดียว ตอบโจทย์ได้เลย ตัวอย่างของ Data Year Region Income Y2007 North 20 Y2007 South 10 Y2007 East 30 Y2006 North 10 Y2006 South [...]]]></description>
			<content:encoded><![CDATA[<p><strong>เขียน MSSQL store procedure เพื่อทำ Crosstab หรือ Pivot Table</strong></p>
<p>วันก่อน มีโอกาสต้องเขียน การแสดงผลข้อมูลเป็นแบบ แนวนอน หรือที่เค้าเรียกกันว่า Crosstab แต่เนื่องด้วย ฐานข้อมูลที่ใช้ มันเป็น MSSQL 2000 มันไม่มีพวก Pivot Table มาให้ (Access ยังมีเลย) เลยต้องหาเอาเอง ไปเจอเว็บนึงเค้า เขียนเป็น Store Procedure ไว้ เอามาใช้ Work เลยทีเดียว ตอบโจทย์ได้เลย</p>
<p>ตัวอย่างของ Data</p>
<p><strong>Year Region Income</strong><br />
Y2007 North 20<br />
Y2007 South 10<br />
Y2007 East 30<br />
Y2006 North 10</p>
<p>Y2006 South 10</p>
<p>Y2006 East 10</p>
<p>เมื่อทำ Crosstab แล้วจะได้แบบนี้<br />
ํ<br />
<strong>Year North South East</strong><br />
Y2006 10 10 10<br />
Y2007 20 10 30</p>
<p>อ้าวแล้วทำยังไงให้ได้แบบนี้ล่ะ มาดูวิธีการกันเลยครับ</p>
<p><span id="more-140"></span></p>
<p><strong>เขียน Store Proc ดังนี้</strong></p>
<pre lang="sql">CREATE     PROC sp_CrossTab
  @table       AS sysname,        -- Table to crosstab
  @onrows      AS nvarchar(128),  -- Grouping key values (on rows)
  @onrowsalias AS sysname = NULL, -- Alias for grouping column
  @oncols      AS nvarchar(128),  -- Destination columns (on columns)
  @sumcol      AS sysname = NULL  -- Data cells
AS

DECLARE
  @sql AS varchar(8000),
  @NEWLINE AS char(1)

SET @NEWLINE = CHAR(10)

-- step 1: beginning of SQL string
SET @sql =
  'SELECT' + @NEWLINE +
  '  ' + @onrows +
  CASE
    WHEN @onrowsalias IS NOT NULL THEN ' AS ' + @onrowsalias
    ELSE ''
  END

CREATE TABLE #keys(keyvalue nvarchar(100) NOT NULL PRIMARY KEY)

DECLARE @keyssql AS varchar(1000)
SET @keyssql =
  'INSERT INTO #keys ' +
  'SELECT DISTINCT CAST(' + @oncols + ' AS nvarchar(100)) ' +
  'FROM ' + @table

EXEC (@keyssql)

DECLARE @key AS nvarchar(100)
SELECT @key = MIN(keyvalue) FROM #keys

WHILE @key IS NOT NULL
BEGIN
  SET @sql = @sql + ','                   + @NEWLINE +
    '  SUM(CASE CAST(' + @oncols +
                     ' AS nvarchar(100))' + @NEWLINE +
    '        WHEN N''' + @key +
           ''' THEN ' + CASE
                          WHEN @sumcol IS NULL THEN '1'
                          ELSE @sumcol
                        END + @NEWLINE +
    '        ELSE 0'                      + @NEWLINE +
    '      END) AS D' + @key

  SELECT @key = MIN(keyvalue) FROM #keys
  WHERE keyvalue &amp;gt; @key
END

SET @sql = @sql         + @NEWLINE +
  'FROM ' + @table      + @NEWLINE +
  'GROUP BY ' + @onrows + @NEWLINE +
  'ORDER BY ' + @onrows

 PRINT @sql  + @NEWLINE -- For debug
EXEC (@sql)</pre>
<p>ใน Database Master (เพื่อเรียกใ้ช้ได้ทุก Database แบบง่ายๆหน่อย)</p>
<p>วิธีเรียกใช้งานก็</p>
<p>EXEC sp_crosstab<br />
@table = &#8216;ชื่อ Table ที่ต้องการสร้าง Crosstab จากมัน&#8217;,<br />
@onrows = &#8216;Field ที่ต้องการเอามาเป็น Row&#8217;,<br />
@oncols = &#8216;Field ที่ต้องการเอามาเป็น Column&#8217;,<br />
@sumcol = &#8216;Field ที่ต้องการเอามาเป็น จำนวนรวม&#8217;</p>
<p>แค่นี้เราก็สามารถสร้าง ตาราง Crosstab ได้อย่างง่ายๆ แล้วครับ</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nop.in.th/database/mssql/create-mssql-2000-crosstab/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>การสร้างฐานข้อมูลวันที่ใน Table ด้วย MSSQL</title>
		<link>http://www.nop.in.th/database/mssql/create-date-table-with-mssql/</link>
		<comments>http://www.nop.in.th/database/mssql/create-date-table-with-mssql/#comments</comments>
		<pubDate>Wed, 27 Feb 2008 06:45:26 +0000</pubDate>
		<dc:creator>นพ</dc:creator>
				<category><![CDATA[MSSQL]]></category>

		<guid isPermaLink="false">http://www.nop.in.th/?p=250</guid>
		<description><![CDATA[วันนี้มีความต้องการสร้างฐานข้อมูลวันที่ในตารางของ MSSQL แต่ให้ไปนั่ง Key เอาหรือไป Copy เอาคงไม่ไหว เลยเขียน Script เอาไว้สร้างวันที่เอาไว้เผื่อใครเอาไปใช้ครับ declare @i int declare @CAL_DATE datetime SET @i=0 while (@i &#60; 1825) begin -- เอาวันพรุ่งนี้เข้า set @CAL_DATE = (select replace(CONVERT(varchar(11), GETDATE()+@i, 111),'/','-')) insert into MS_CALENDAR (CAL_DATE) values (@CAL_DATE) -- เอาวันพรุ่งนี้เข้า -- เอาเมื่อวานเข้า set @CAL_DATE = (select replace(CONVERT(varchar(11), GETDATE()-@i, 111),'/','-')) insert into MS_CALENDAR (CAL_DATE) values (@CAL_DATE) [...]]]></description>
			<content:encoded><![CDATA[<p>วันนี้มีความต้องการสร้างฐานข้อมูลวันที่ในตารางของ MSSQL แต่ให้ไปนั่ง Key เอาหรือไป Copy เอาคงไม่ไหว เลยเขียน Script เอาไว้สร้างวันที่เอาไว้เผื่อใครเอาไปใช้ครับ</p>
<pre lang="sql">declare @i int
declare  @CAL_DATE datetime
SET @i=0
while (@i &lt; 1825)
begin
	-- เอาวันพรุ่งนี้เข้า
	set @CAL_DATE = (select replace(CONVERT(varchar(11), GETDATE()+@i, 111),'/','-'))
	insert into MS_CALENDAR (CAL_DATE) values (@CAL_DATE)
	-- เอาวันพรุ่งนี้เข้า
	-- เอาเมื่อวานเข้า
	set @CAL_DATE = (select replace(CONVERT(varchar(11), GETDATE()-@i, 111),'/','-'))
	insert into MS_CALENDAR (CAL_DATE) values (@CAL_DATE)
	-- เอาเมื่อวานเข้า
	SET @i=@i+1
end</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.nop.in.th/database/mssql/create-date-table-with-mssql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>การ Add Server Name เพื่อทำ Link Server ใน MSSQL</title>
		<link>http://www.nop.in.th/database/mssql/add-server-name-for-link-server-in-mssql/</link>
		<comments>http://www.nop.in.th/database/mssql/add-server-name-for-link-server-in-mssql/#comments</comments>
		<pubDate>Mon, 11 Feb 2008 06:07:43 +0000</pubDate>
		<dc:creator>นพ</dc:creator>
				<category><![CDATA[MSSQL]]></category>

		<guid isPermaLink="false">http://www.nop.in.th/?p=232</guid>
		<description><![CDATA[ทำการ Add Server ด้วย System Store Procedure ก่อน ด้วยคำสั่ง use Master EXEC sp_addlinkedserver    @server = servername ,    @provider = &#8216;MSDASQL&#8217;,    @provstr = &#8216;DRIVER={SQL Server};SERVER=servername;UID=user;PWD=password;&#8217; หลังจากนั้น ก็รัน SP เพื่อ ปรับ Config Data Access EXEC sp_serveroption &#8217;178.55.1.3&#8242;, &#8216;data access&#8217;, &#8216;TRUE&#8217; ถ้าไม่รันคำสั่งนี้ จะขึ้น Error อันนี้ servername is not configured for DATA ACCESS. เท่านี้เราก็สามารถเรียก Table ของ [...]]]></description>
			<content:encoded><![CDATA[<p><strong>ทำการ Add Server ด้วย System Store Procedure ก่อน ด้วยคำสั่ง</strong></p>
<p>use Master</p>
<p>EXEC sp_addlinkedserver<br />
   @server = servername ,<br />
   @provider = &#8216;MSDASQL&#8217;,<br />
   @provstr = &#8216;DRIVER={SQL Server};SERVER=servername;UID=user;PWD=password;&#8217;</p>
<p>หลังจากนั้น ก็รัน SP เพื่อ ปรับ Config Data Access</p>
<p>EXEC sp_serveroption &#8217;178.55.1.3&#8242;, &#8216;data access&#8217;, &#8216;TRUE&#8217;</p>
<p>ถ้าไม่รันคำสั่งนี้ จะขึ้น Error อันนี้</p>
<p>servername is not configured for DATA ACCESS.</p>
<p>เท่านี้เราก็สามารถเรียก Table ของ MSSQL ข้าม Server ได้แล้ว</p>
<p>เช่นถ้าต้องการเรียก Table ABC บน Database ADatabase ที่อยู่ใน AServer ก้อจะเรียกดังนี้</p>
<p>select * from [Aserver].ADatabase.dbo.ABC เป็นต้น</p>
<p class="poweredbyperformancing">Powered by <a href="http://scribefire.com/">ScribeFire</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nop.in.th/database/mssql/add-server-name-for-link-server-in-mssql/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Script สร้าง Datadict สำหรับ MSSQL</title>
		<link>http://www.nop.in.th/database/mssql/script-%e0%b8%aa%e0%b8%a3%e0%b9%89%e0%b8%b2%e0%b8%87-datadict-%e0%b8%aa%e0%b8%b3%e0%b8%ab%e0%b8%a3%e0%b8%b1%e0%b8%9a-mssql/</link>
		<comments>http://www.nop.in.th/database/mssql/script-%e0%b8%aa%e0%b8%a3%e0%b9%89%e0%b8%b2%e0%b8%87-datadict-%e0%b8%aa%e0%b8%b3%e0%b8%ab%e0%b8%a3%e0%b8%b1%e0%b8%9a-mssql/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 09:11:24 +0000</pubDate>
		<dc:creator>นพ</dc:creator>
				<category><![CDATA[MSSQL]]></category>

		<guid isPermaLink="false">http://www.nop.in.th/?p=198</guid>
		<description><![CDATA[Script สำหรับสร้าง Datadict สำหรับ MSSQL select&#160; b.colid as [ID] , a.NAME as TABLE_NAME&#160; , b.name&#160; as COLUMN_NAME ,&#160;&#160; c.name&#160; as [TYPE], b.length as SIZE from sysobjects a,syscolumns b,systypes c where a.id = b.id&#160; and a.xtype = 'U' and a.name in ('MS_TRANSPORT_MODEL') and b.xusertype = c.xusertype]]></description>
			<content:encoded><![CDATA[<p>Script สำหรับสร้าง Datadict สำหรับ MSSQL</p>
<pre lang=sql line=1>
select&nbsp; b.colid as [ID] , a.NAME as TABLE_NAME&nbsp; , b.name&nbsp; as COLUMN_NAME ,&nbsp;&nbsp; c.name&nbsp; as [TYPE], b.length as SIZE
from sysobjects a,syscolumns b,systypes c
where a.id = b.id&nbsp; and a.xtype = 'U' and a.name in ('MS_TRANSPORT_MODEL') and
b.xusertype = c.xusertype
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.nop.in.th/database/mssql/script-%e0%b8%aa%e0%b8%a3%e0%b9%89%e0%b8%b2%e0%b8%87-datadict-%e0%b8%aa%e0%b8%b3%e0%b8%ab%e0%b8%a3%e0%b8%b1%e0%b8%9a-mssql/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>MSSQL Error (Could not allocate ancillary table &#8230;)</title>
		<link>http://www.nop.in.th/database/mssql/mssql-errror-could-not-allocate-ancillary-table/</link>
		<comments>http://www.nop.in.th/database/mssql/mssql-errror-could-not-allocate-ancillary-table/#comments</comments>
		<pubDate>Wed, 12 Dec 2007 04:59:12 +0000</pubDate>
		<dc:creator>นพ</dc:creator>
				<category><![CDATA[MSSQL]]></category>

		<guid isPermaLink="false">http://www.nop.in.th/?p=197</guid>
		<description><![CDATA[Could not allocate ancillary table for view or function resolution. The maximum number of tables in a query (260) was exceeded. เหตุเกิดที่ว่าผมต้องสร้าง View เพื่อทำการตรวจสอบผลการทำงานทั้งหมดของระบบ เนื่องจากต้องไปวิ่งไล่ Table แทบทั้ง Database เพื่อทำการตรวจสอบความถูกต้องของข้อมูล ปรากฏว่ามัน Join กันเยอะเกินไป จากหลายๆ Table มันเลย แจ้งว่า The maximum number of tables in a query (260) was exceeded. คือ เลือก Table มามากเกินไปใน Query วิธีแก้ไขของผมคือไปสร้าง Function มาแทน [...]]]></description>
			<content:encoded><![CDATA[<p>Could not allocate ancillary table for view or function resolution. The maximum number of tables in a query (260) was exceeded.</p>
<p>เหตุเกิดที่ว่าผมต้องสร้าง View เพื่อทำการตรวจสอบผลการทำงานทั้งหมดของระบบ เนื่องจากต้องไปวิ่งไล่ Table แทบทั้ง Database เพื่อทำการตรวจสอบความถูกต้องของข้อมูล ปรากฏว่ามัน Join กันเยอะเกินไป จากหลายๆ Table มันเลย แจ้งว่า The maximum number of tables in a query (260) was exceeded. คือ เลือก Table มามากเกินไปใน Query วิธีแก้ไขของผมคือไปสร้าง Function มาแทน แล้วใน View นี้ไปเรียก Function ที่ไปเรื่อง Table เยอะๆ อีกทีนึง (จริงๆมันก็ช้านะครับ แต่ผมรับได้กับการตรวจสอบความถูกต้องของข้อมูลก่อนนำเข้าระบบหลักแบบนี้)</p>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nop.in.th/database/mssql/mssql-errror-could-not-allocate-ancillary-table/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>หน่วงเวลาใน MSSQL (MSSQL Delay)</title>
		<link>http://www.nop.in.th/database/mssql/%e0%b8%ab%e0%b8%99%e0%b9%88%e0%b8%a7%e0%b8%87%e0%b9%80%e0%b8%a7%e0%b8%a5%e0%b8%b2%e0%b9%83%e0%b8%99-mssql-mssql-delay/</link>
		<comments>http://www.nop.in.th/database/mssql/%e0%b8%ab%e0%b8%99%e0%b9%88%e0%b8%a7%e0%b8%87%e0%b9%80%e0%b8%a7%e0%b8%a5%e0%b8%b2%e0%b9%83%e0%b8%99-mssql-mssql-delay/#comments</comments>
		<pubDate>Tue, 11 Dec 2007 06:32:21 +0000</pubDate>
		<dc:creator>นพ</dc:creator>
				<category><![CDATA[MSSQL]]></category>

		<guid isPermaLink="false">http://www.nop.in.th/?p=196</guid>
		<description><![CDATA[ไม่ได้เขียน Blog เสียนาน เพราะไม่ค่อยมีเรื่องอะไรใหม่ๆ ในชีวิต แล้วก็หนีไปบวชมา เลยไม่ได้เขียนมาซะนาน วันนี้ได้โจทย์ว่าต้อง Delay การแสดงผล หรือ การอัพเดตข้อมูลชุด หนึ่ง ก่อนอีกชุดนึงมา ลองค้นๆ MSSQL มี คำสั่งในการชะลอการทำงาน ดังนี้ waitfor delay &#8217;00:00:01&#8242; อันนี้คือ รอ 1 วินาที ตัวอย่าง select getdate()waitfor delay &#8217;00:00:02&#8242; select getdate() ผลลัพท์ 2007-12-11 13:26:19.1632007-12-11 13:26:21.180 ต่างกัน 2 วินาที เสร็จครับ]]></description>
			<content:encoded><![CDATA[<p>ไม่ได้เขียน Blog เสียนาน เพราะไม่ค่อยมีเรื่องอะไรใหม่ๆ ในชีวิต แล้วก็หนีไปบวชมา เลยไม่ได้เขียนมาซะนาน วันนี้ได้โจทย์ว่าต้อง Delay การแสดงผล หรือ การอัพเดตข้อมูลชุด หนึ่ง ก่อนอีกชุดนึงมา ลองค้นๆ MSSQL มี คำสั่งในการชะลอการทำงาน ดังนี้</p>
<p>waitfor delay &#8217;00:00:01&#8242; </p>
<p>อันนี้คือ รอ 1 วินาที</p>
<p>ตัวอย่าง</p>
<p>select getdate()<br />waitfor delay &#8217;00:00:02&#8242; <br />select getdate()</p>
<p>ผลลัพท์</p>
<p>2007-12-11 13:26:19.163<br />2007-12-11 13:26:21.180</p>
<p>ต่างกัน 2 วินาที</p>
<p>เสร็จครับ</p>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nop.in.th/database/mssql/%e0%b8%ab%e0%b8%99%e0%b9%88%e0%b8%a7%e0%b8%87%e0%b9%80%e0%b8%a7%e0%b8%a5%e0%b8%b2%e0%b9%83%e0%b8%99-mssql-mssql-delay/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hex To Decimal and Decimal to Hex in MSSQL</title>
		<link>http://www.nop.in.th/database/mssql/hex-to-decimal-and-decimal-to-hex-in-mssql/</link>
		<comments>http://www.nop.in.th/database/mssql/hex-to-decimal-and-decimal-to-hex-in-mssql/#comments</comments>
		<pubDate>Fri, 20 Jul 2007 05:04:46 +0000</pubDate>
		<dc:creator>นพ</dc:creator>
				<category><![CDATA[MSSQL]]></category>

		<guid isPermaLink="false">http://www.nop.in.th/?p=151</guid>
		<description><![CDATA[ไม่ได้เขียนมาซะนานเนื่องจากงานยุ่ง วันก่อนมีพี่คนนึงถามว่า &#8220;เอ๊ะ ใน MSSQL มี Function Hex To Decimal และ Decimal to Hex มั้ย?&#8221; ผมก็เอาเลยเริ่มค้นหา ก็ทำให้รู้ว่ามันไม่มี Function นี้ในตัวของมันเอง ต้องเขียนเอง เลยลองค้นๆใน Google ดู ก็พบ Function ที่ Work!! ลองเอาไปใช้งานกันดูครับ Function IntToHex create function HexToInt(@vsData char(8)) RETURNS int AS begin declare @iDataLength int declare @iDataLengthM1 int declare @iResult int set @iResult = 0 declare @i int set [...]]]></description>
			<content:encoded><![CDATA[<p>ไม่ได้เขียนมาซะนานเนื่องจากงานยุ่ง วันก่อนมีพี่คนนึงถามว่า</p>
<p>&#8220;เอ๊ะ ใน MSSQL มี Function Hex To Decimal และ Decimal to Hex มั้ย?&#8221;</p>
<p>ผมก็เอาเลยเริ่มค้นหา ก็ทำให้รู้ว่ามันไม่มี Function นี้ในตัวของมันเอง ต้องเขียนเอง เลยลองค้นๆใน Google ดู ก็พบ Function ที่ Work!! ลองเอาไปใช้งานกันดูครับ</p>
<p><span id="more-95"></span></p>
<h3>Function IntToHex</h3>
<pre line="1" lang="sql">
create function HexToInt(@vsData char(8))

RETURNS int AS

begin

 declare @iDataLength int

 declare @iDataLengthM1 int

 declare @iResult     int set @iResult = 0

 declare @i           int set @i       = 0

 declare @iTemp       int set @iTemp   = 1

 declare @iTempMax    int

 set @iDataLength=len(@vsData)

 if not @vsData like replicate('[0-9a-fA-F]',@iDataLength) return NULL

 set @iDataLengthM1=@iDataLength-1

 while @i &lt; @iDataLength begin

  if @i=@iDataLengthM1 begin

   set @iTempMax=(ASCII(substring(@vsData, @iDataLength - @i, 1))&amp;79)%55

   set @iResult =(@iResult+(@iTempMax&amp;7)*@iTemp)

   if (@iTempMax&amp;8)=8 set @iResult=@iResult-(Power(16,@iDataLengthM1)-1)*8-8

  end else begin

   set @iResult =@iResult+((ASCII(substring(@vsData, @iDataLength - @i, 1))&amp;79)%55)*@iTemp

  end

  set @i = @i + 1

  if @i&lt;8 set @iTemp = 16 * @iTemp

 end

 Return @iResult

end</pre>
<h3>Function HexToInt</h3>
<pre line="1" lang="sql">
Create function [dbo].[IntToHex](@Dec as bigint) --@Hex As varchar(8) Output)

returns varchar(16) as

BEGIN

      Declare @HexDigits as char(16)

      declare @Hex as varchar(16)      Set @HexDigits = '0123456789ABCDEF'

Set @Hex = ''

      While @Dec &gt;= 16

         Begin

           Set @Hex = SubString(@HexDigits, (@Dec % 16) + 1, 1) + @Hex

           Set @Dec = @Dec / 16

         End

Set @Hex = SubString(@HexDigits, @Dec + 1, 1) + @Hex

return @hex

end</pre>
<p><strong>ตัวอย่างการเรียกใช้งาน</strong></p>
<pre line="1" lang="sql">
select dbo.HexToInt('2A') as HexToInt, dbo.IntToHex(dbo.HexToInt('2A')) as IntToHex</pre>
<p><strong>result</strong><br />
42	2A</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nop.in.th/database/mssql/hex-to-decimal-and-decimal-to-hex-in-mssql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MSSQL Split Function</title>
		<link>http://www.nop.in.th/database/mssql/mssql-split-function/</link>
		<comments>http://www.nop.in.th/database/mssql/mssql-split-function/#comments</comments>
		<pubDate>Thu, 28 Jun 2007 04:41:59 +0000</pubDate>
		<dc:creator>นพ</dc:creator>
				<category><![CDATA[MSSQL]]></category>

		<guid isPermaLink="false">http://www.nop.in.th/?p=128</guid>
		<description><![CDATA[CREATE FUNCTION dbo.Split(@String nvarchar(4000), @Delimiter char(1)) RETURNS @Results TABLE (Items nvarchar(4000)) AS BEGIN   DECLARE @INDEX INT   DECLARE @SLICE nvarchar(4000)   -- HAVE TO SET TO 1 SO IT DOESNT EQUAL Z   -- ERO FIRST TIME IN LOOP   SELECT @INDEX = 1   WHILE @INDEX !=0 BEGIN   -- GET THE INDEX [...]]]></description>
			<content:encoded><![CDATA[<pre line="1" lang="SQL">
CREATE FUNCTION dbo.Split(@String nvarchar(4000), @Delimiter char(1))

RETURNS @Results TABLE (Items nvarchar(4000))

AS    BEGIN

    DECLARE @INDEX INT

    DECLARE @SLICE nvarchar(4000)

    -- HAVE TO SET TO 1 SO IT DOESNT EQUAL Z

    --     ERO FIRST TIME IN LOOP

    SELECT @INDEX = 1

    WHILE @INDEX !=0

BEGIN

              -- GET THE INDEX OF THE FIRST OCCURENCE OF THE SPLIT CHARACTER

              SELECT @INDEX = CHARINDEX(@Delimiter,@STRING)

              -- NOW PUSH EVERYTHING TO THE LEFT OF IT INTO THE SLICE VARIABLE

              IF @INDEX !=0

                    SELECT @SLICE = LEFT(@STRING,@INDEX - 1)

              ELSE

                    SELECT @SLICE = @STRING

              -- PUT THE ITEM INTO THE RESULTS SET

              INSERT INTO @Results(Items) VALUES(@SLICE)

              -- CHOP THE ITEM REMOVED OFF THE MAIN STRING

              SELECT @STRING = RIGHT(@STRING,LEN(@STRING) - @INDEX)

              -- BREAK OUT IF WE ARE DONE

              IF LEN(@STRING) = 0 BREAK

    END

    RETURN

END</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.nop.in.th/database/mssql/mssql-split-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

