อู้อย่างงง~งง

ช่วงนี้ผมคงงดเขียนบล็อกไปบ้างนะครับ ..อยู่ในระยะมรสุมชีวิต 2-3 เดือน

วันนี้พักอู้ด้วยเรื่องงง~งง นิดหน่อยครับ ว่าด้วยเรื่อง MySQL
(MySQL คือระบบจัดการฐานข้อมูลยอดนิยมยี่ห้อหนึ่งครับ..เข้าใจว่าคงมีหลายท่านที่รู้จัก (แต่ถ้าไม่รู้จัก..ไม่แปลกครับ)
จะว่าไปผมก็เคยเขียนถึงปัญหาชวนมึนของ MySQL เอาไว้ในบล็อกครั้งนึงนะ)

ผมไม่แน่ใจว่าคราวนี้ตรรกะผมผิด ความเข้าใจผมผิด หรือผิดที่ MySQL (อีก)?

เอาภาพมาแปะก่อนแล้วกัน

อธิบายแบบนี้ครับ..ด้านบนเป็นตัวอย่าง Table หนึ่งในอะไรสักอย่างที่ผมขลุกอยู่ช่วงนี้
ประกอบด้วยข้อมูล 6 คอลัมน์ x 2 แถว
ประเด็นสำคัญคือคอลัมน์สุดท้ายที่ชื่อ paymentSuccessDateTime ที่เก็บข้อมูลเป็นชนิด DATETIME เอาไว้
จะเห็นว่าข้อมูลมี 2 แถว แถวหนึ่งในคอลัมน์ที่ว่ามี DATETIME เป็น “2010-07-07 07:08:09” (มีข้อมูล)
ส่วนอีกคอลัมน์แสดงผลเป็น “0000-00-00 00:00:00” ..เป็นค่า Default ที่ถูกกำหนดขึ้นในกรณีที่คอลัมน์ดังกล่าวไม่อนุญาตให้เป็น NULL (ค่าว่าง)

ในภาพผม Query (SELECT) ด้วยคำสั่ง SQL สามคำสั่ง ..แยกตามกรอบสีของภาพ

- กรอบสีเขียวด้านบน “SELECT * FROM ชื่อตาราง”
แน่นอนว่าต้องได้ข้อมูลทุกแถวในตารางแสดงขึ้นมา

- กรอบสีเหลืองตรงกลาง “SELECT * FROM ชื่อตาราง WHERE ชื่อคอลัมน์ IS NOT NULL
คราวนี้มีเงื่อนไขว่าคอลัมน์ paymentSuccessDateTime ต้องไม่เป็น NULL
ตอนแรกผมก็แปลกใจนิดๆ ที่ผลลัพธ์มันออกเจ้าบรรทัดที่มี DATETIME เป็น “0000-00-00 00:00:00” มาด้วย
..ซึ่งโอเค ถ้าจะแสดงแบบนี้ ก็แปลว่าถ้าเรา Query ด้วยเงื่อนไขตรงกันข้าม –
ผลลัพธ์ก็น่าจะได้ตรงกันข้ามกับผลลัพธ์นี้สิ..

- กรอบสีแดงด้านล่าง “SELECT * FROM ชื่อตาราง WHERE ชื่อคอลัมน์ IS NULL
มันโผล่มาอี๊ก~!?
(ไม่งงตรรกะใช่มั้ยครับ? ..คือคำสั่งที่สองบอกว่าให้แสดงข้อมูลที่คอลัมน์นี้ไม่เป็นค่าว่าง มันก็โผล่มา
..แล้วพอคำสั่งที่สามบอกว่าให้แสดงข้อมูลที่คอลัมน์นี้เป็นค่าว่าง ..มันก็โผล่มาอีก!?)

งงครับ..ผมเข้าใจอะไรผิด!?

  del.icio.us this!

ยังไม่มี reply จาก entry: อู้อย่างงง~งง »

Comment RSS · TrackBack URI