ข้ามไปที่เนื้อหาหลัก

[SQL SERVER] Select แล้ว Order by ให้ค่า Null อยู่ด้านล่าง

เฮ้ย ทำไมทำ Order  by แล้ว Null ขึ้นมาอยู่ด้านบน
อยากจะเอาไว้ข้างล่าง เขียนยังไงหว่า....

ทำได้ หลายแบบ
1. รู้ว่าค่ามากสุด คืออะไร
ORDER BY COALESCE(Col,'9999-12-31 23:59:59.997')

--COALESCE คือ Function ที่จะแทนที Empty หรือ NULL ด้วยข้อมูลที่เรากำหนดไว้
--'9999-12-31 23:59:59.997' คือ ค่า Max Value ของ Column  ของคุณ
-- Col คือชื่อ Column ของคุณ

2.ไม่รู้ว่าค่ามากสุดคืออะไร
CASE WHEN Col Is NULL Then 1 Else 0 End, Col
-- Col คือชื่อ Column ของคุณ

ลองดูตัวอย่าง อันนี้
*****************************************************
Code:
--Create Temp Table
DECLARE @Temp table(Col datetime)
INSERT INTO @Temp VALUES(getdate())
INSERT INTO @Temp VALUES('2007-10-19 09:54:03.730')
INSERT INTO @Temp VALUES('2006-10-19 09:54:03.730')
INSERT INTO @Temp VALUES('2005-10-19 09:54:03.730')
INSERT INTO @Temp VALUES('2006-10-19 09:54:03.730')
INSERT INTO @Temp VALUES('2004-10-19 09:54:03.730')
INSERT INTO @Temp VALUES(NULL)
INSERT INTO @Temp VALUES(NULL)

--Before
SELECT *
FROM @Temp
ORDER BY Col

--Method 1
SELECT *
FROM @Temp
ORDER BY COALESCE(Col,'9999-12-31 23:59:59.997')

--Method 2
SELECT *
FROM @Temp
ORDER BY CASE WHEN Col Is NULL Then 1 Else 0 End, Col  


*****************************************************
ขอขอบคุณ เดนิส

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

เชื่อมเหล็กฉุกเฉิน ใช้แค่แบต2ลูกกับสายพ่วงแบต และเหล็กเชื่อม

เอามาฝากครับ จากเว็บท่องไพรนะครับ น่าสนใจดี เผื่อฉุกเฉิน ใครจะคิดบ้างว่า "แบตเตอรี่รถยนต์" จะมีประโยชน์ใช้สอยที่มากกว่าการเป็นแหล่งเก็บพลังงานไฟฟ้าและต้นกำเนิด ไฟฟ้าที่ไว้ใช้ในรถยนต์ วันนี้อยากจะขอนำเสนอความอเนกประสงค์ของแบตเตอรี่อีกรูปแบบหนึ่งในการนำมา ประ ยุกต์ใช้เป็นเครื่องเชื่อมไฟฟ้า เผื่อยามว่างอยากจะซ่อมเชื่อมเครื่องใช้ในภายในบ้าน หรือกับการซ่อมแซมรถก็สามา- รถ ทำได้ด้วยตนเอง 1. พระเอกของฉบับนี้ แบตเตอรี่อย่างน้อย 2 ลูก สำหรับ เป็นแหล่งกำเนิดกระแสไฟ    2. สายพ่วงแบตเตอรี่ อันนี้อาจหาหยิบยืมเพื่อน บ้านมาใช้ก่อนก็ได้ (ใช้เสร็จแล้วอย่าลืมคืน) ควรมีสัก 3 เส้น สำหรับการใช้ทำเครื่องเชื่อมเหล็ก     3. อันนี้เพื่อการจำ ไม่ให้สับสนเกี่ยวกับขั้วของแบตเตอรี่ ตามหลักสากลแล้วสายไฟของขั้วลบ หรือสายกราวนด์ จะใช้สีดำแทนขั้ว ทั้งนี้ เพื่อป้องกันการสับสน ส่วนสายสีอื่นให้ใช้แทนขั้วบวกได้ จะได้ไม่สับสน 4. อันนี้เขาเรียกว่าลวดเชื่อมแบบไฟฟ้า ลักษณะคล้ายธูป ที่เราใช้ไหว้พระ ข้อแตกต่างระหว่างลวดเชื่อม แบบใช้ แก๊สและไฟฟ้าคือ ลวดเชื่อมแบบใช้แก๊สจะเป็นลวดโลหะ ที่ไม่มีการเคลื...

[SQL SERVER] ตัด 0 นำหน้าในตัวแปร Varchar

ตัด 0 นำหน้าในตัวแปร Varchar ผมได้เจอปัญหาว่าบางครั้งการแปลงข้อมูลตัวเลขเช่นเดือน Month = ‘02’ เมื่อต้องการเอามาใช้งานหรือเข้าสูตรต่อ โดยให้ Type Varchar เช่นเดิมนั้นเกิดปัญหา เพราะแหล่งข้อมูลที่เข้ามามีทั้ง ‘04’ และ ‘4’ ไปเจอที่ http://blog.sqlauthority.com/ 2012/11/19/ sql-server-removing-leading-zeros-from-column-in-table/ ของตาพิเนา....ตามนี้ ******************************************************** Code:             SUBSTRING ( ชื่อ Cloumn ,   PATINDEX ( '%[^0 ]%' ,   ชื่อ Cloumn +   ' ' ),   LEN ( ชื่อ Cloumn )) ******************************************************** ตัวอย่าง : USE   tempdb GO -- Create sample table CREATE TABLE   Table1   ( Col1   VARCHAR ( 100 )) INSERT INTO   Table1   ( Col1 ) SELECT   '0001' UNION   ALL SELECT   '000100' UNION   ALL SELECT   '100100' UNION   ALL SELECT   '000 0001' ...

[SQL SERVER] ใช้งาน TRY…CATCH ทำงานคู่กับ Transacton เพื่อยืนยันการทำรายการ

     หลายๆคน อาจรู้จักคำสั่ง Try … Catch ในภาษาอื่นๆมาบ้าง วันนี้ลองมาดู Try … Catch ใน SQL SERVER ( Transact-SQL ) กัน เพราะงานบางครั้งจำเป็นจะต้องมีการตรวจสอบการทำงานของคำสั่งว่าถูกต้องหรือไม่ หรือเมื่อมีความผิดพลาดเกิดขึ้นกับการทำงานของคำสั่ง จะทำอย่างไรต่อไป            บทความนี้จะเสนอแนวทางว่าถ้าเรานำมาช่วยในการตรวจสอบความผิดพลาด ในกรณีการทำงานกับ ข้อมูล Transaction นั้น สามารถทำได้อย่างไร >>> Red Code = คำสั่งเพิ่มเติมที่ใช้ดึงค่าการทำงานของ TRANSACTION ขณะนั้น Blue Bold Code = คำสั่ง Try … Catch ในบทความนี้ Light Green Code = Comment หรือคำอธิบายคำสั่ง – ขั้นตอนนั้นๆ เพื่อความเข้าใจมากขึ้น ********************************************************************** ตัวอย่างคำสั่ง ::: -- สร้างตารางข้อมูลชั่วคราวขึ้นมาเพื่อใช้ทำการทดสอบ Create table #TTB_Test ( ProductID varchar ( 20 )); insert into #TTB_Test values ( '777' ); insert into #TTB_Test Values ( '888' ); ...