Explicit Knowledge เรื่องการใช้งาน Case-insensitiveและ Case-sensitive สำหรับฐานข้อมูล SQL Server
- Posted by jessada
- Categories Explicit Knowledge, ชุมชนการบริการและความรู้, ชุมชนนักพัฒนา
- Date August 17, 2022
- Comments 0 comment
ในการออกแบบฐานข้อมูลนั้นเราจำเป็นต้องคำนึงถึงชนิดรหัสตัวอักษรที่เก็บในฐานข้อมูล (Collation) เพื่อให้ตรงกับวัตถุประสงค์การใช้งานข้อมูลนั้นๆ และลดความผิดพลาดในการเรียกใช้งานข้อมูล ซึ่งในองค์ความรู้นี้จะยกตัวอย่าง ชนิดรหัสตัวอักษรเก็บในฐานข้อมูล ได้แก่ Thai_CI_AI, Thai_CI_AS, Thai_CS_AIและ Thai_CS_AS
- Thai หมายถึง ตัวอักษรภาษาไทย
- CI หมายถึง Case-insensitive ตัวอักษรตัวเล็กกับตัวใหญ่เป็นตัวเดียวกัน
- CS หมายถึง Case-sensitive ตัวอักษรตัวเล็กกับตัวใหญ่เป็นตัวคนละตัว
- AI หมายถึง ไม่สนใจวรรณยุกต์
- AS หมายถึง สนใจวรรณยุกต์
จากภาพ เป็นตัวอย่างการออกแบบตารางโดยใช้ชนิดรหัสตัวอักษรที่เก็บในฐานข้อมูลที่แตกต่างกัน
- ฟิวด์ username จะตั้งชนิดรหัสตัวอักษรที่เก็บเป็น Thai_CI_AI
- ฟิวด์ username จะตั้งชนิดรหัสตัวอักษรที่เก็บเป็น Thai_CI_AS
- ฟิวด์ username จะตั้งชนิดรหัสตัวอักษรที่เก็บเป็น Thai_CS_AI
- ฟิวด์ username จะตั้งชนิดรหัสตัวอักษรที่เก็บเป็น Thai_CS_AS
จากภาพ เป็นตัวอย่างข้อมูล โดยทั้ง ๔ ตารางจะใส่ข้อมูลเหมือนกัน
จากภาพ เป็นตัวอย่างการคิวรี่ข้อมูลโดยใช้เงื่อนไขเท่ากับ (=) กับชนิดรหัสตัวอักษรที่เก็บเป็น Thai_CI_AI ได้ผลออกมาดังภาพ
- เงื่อนไขเป็นตัวอักษรพิมพ์เล็กทั้งหมด
- พบข้อมูล ๒ แถว เป็น Jessada และ jessada
- เงื่อนไขมีตัวอักษรพิมพ์ใหญ่และ ตัวอักษรพิมพ์เล็ก
- พบข้อมูล ๒ แถว เป็น Jessada และ jessada
- เงื่อนไขมีตัววรรณยุกต์ภาษาไทยและ เป็นตัวอักษรพิมพ์เล็กทั้งหมด
- พบข้อมูล ๒ แถว เป็น Jessada และ jessada
- เงื่อนไขมีตัววรรณยุกต์ภาษาไทย ตัวอักษรพิมพ์ใหญ่และ ตัวอักษรพิมพ์เล็ก
- พบข้อมูล ๒ แถว เป็น Jessada และ jessada
จากภาพ เป็นตัวอย่างการคิวรี่ข้อมูลโดยใช้เงื่อนไขเท่ากับ (=) กับชนิดรหัสตัวอักษรที่เก็บเป็น Thai_CI_AS ได้ผลออกมาดังภาพ
- เงื่อนไขเป็นตัวอักษรพิมพ์เล็กทั้งหมด
- พบข้อมูล ๒ แถว เป็น Jessada และ jessada
- เงื่อนไขมีตัวอักษรพิมพ์ใหญ่และ ตัวอักษรพิมพ์เล็ก
- พบข้อมูล ๒ แถว เป็น Jessada และ jessada
- เงื่อนไขมีตัววรรณยุกต์ภาษาไทยและ เป็นตัวอักษรพิมพ์เล็กทั้งหมด
- ไม่พบข้อมูล
- เงื่อนไขมีตัววรรณยุกต์ภาษาไทย ตัวอักษรพิมพ์ใหญ่และ ตัวอักษรพิมพ์เล็ก
- ไม่พบข้อมูล
จากภาพ เป็นตัวอย่างการคิวรี่ข้อมูลโดยใช้เงื่อนไขเท่ากับ (=) กับชนิดรหัสตัวอักษรที่เก็บเป็น Thai_CS_AI ได้ผลออกมาดังภาพ
- เงื่อนไขเป็นตัวอักษรพิมพ์เล็กทั้งหมด
- พบข้อมูล ๑ แถว เป็น jessada
- เงื่อนไขมีตัวอักษรพิมพ์ใหญ่และ ตัวอักษรพิมพ์เล็ก
- พบข้อมูล ๑ แถว เป็น Jessada
- เงื่อนไขมีตัววรรณยุกต์ภาษาไทยและ เป็นตัวอักษรพิมพ์เล็กทั้งหมด
- พบข้อมูล ๑ แถว เป็น jessada
- เงื่อนไขมีตัววรรณยุกต์ภาษาไทย ตัวอักษรพิมพ์ใหญ่และ ตัวอักษรพิมพ์เล็ก
- พบข้อมูล ๑ แถว เป็น Jessada
จากภาพ เป็นตัวอย่างการคิวรี่ข้อมูลโดยใช้เงื่อนไขเท่ากับ (=) กับชนิดรหัสตัวอักษรที่เก็บเป็น Thai_CS_AS ได้ผลออกมาดังภาพ
- เงื่อนไขเป็นตัวอักษรพิมพ์เล็กทั้งหมด
- พบข้อมูล ๑ แถว เป็น jessada
- เงื่อนไขมีตัวอักษรพิมพ์ใหญ่และ ตัวอักษรพิมพ์เล็ก
- พบข้อมูล ๑ แถว เป็น Jessada
- เงื่อนไขมีตัววรรณยุกต์ภาษาไทยและ เป็นตัวอักษรพิมพ์เล็กทั้งหมด
- ไม่พบข้อมูล
- เงื่อนไขมีตัววรรณยุกต์ภาษาไทย ตัวอักษรพิมพ์ใหญ่และ ตัวอักษรพิมพ์เล็ก
- ไม่พบข้อมูล
สรุป
- ฟิวด์ username ที่ตั้งชนิดรหัสตัวอักษรที่เก็บเป็น Thai_CI_AI เมื่อใช้เงื่อนไขเท่ากับจะได้ข้อมูลที่กรองเงื่อนไขเฉพาะตัวอักษรเท่ากัน และเป็นตัวอักษรเดียวกัน โดยไม่สนใจว่าจะเป็นตัวอักษรพิมพ์เล็กหรือพิมพ์ใหญ่ และไม่สนใจวรรณยุกต์ (เหมาะกับการใช้เงื่อนไข Like ในการค้นหาทั่วไป)
- ฟิวด์ username ที่ตั้งชนิดรหัสตัวอักษรที่เก็บเป็น Thai_CI_AS เมื่อใช้เงื่อนไขเท่ากับจะได้ข้อมูลที่กรองเงื่อนไขตัวอักษรเท่ากัน เป็นตัวอักษรเดียวกัน และสนใจวรรณยุกต์ โดยไม่สนใจว่าตัวอักษรจะเป็นตัวอักษรพิมพ์เล็กหรือพิมพ์ใหญ่ (เหมาะกับการใช้เงื่อนไข Like ในการค้นหาทั่วไป)
- ฟิวด์ username ที่ตั้งชนิดรหัสตัวอักษรที่เก็บเป็น Thai_CS_AI เมื่อใช้เงื่อนไขเท่ากับจะได้ข้อมูลที่กรองเงื่อนไขเฉพาะตัวอักษรเท่ากัน เป็นตัวอักษรเดียวกันและ ตัวอักษรพิมพ์เล็กหรือพิมพ์ใหญ่ตรงกัน โดยไม่สนใจวรรณยุกต์ (เหมาะกับการใช้เงื่อนไข Like ในการค้นหาทั่วไป)
- ฟิวด์ username ที่ตั้งชนิดรหัสตัวอักษรที่เก็บเป็น Thai_CS_AS เมื่อใช้เงื่อนไขเท่ากับจะได้ข้อมูลที่กรองเงื่อนไขเฉพาะตัวอักษรเท่ากัน เป็นตัวอักษรเดียวกัน ตัวอักษรพิมพ์เล็กหรือพิมพ์ใหญ่ตรงกัน และสนใจวรรณยุกต์ (เหมาะกับการใช้เงื่อนไขที่ต้องการเปรียบเทียบข้อมูลที่เหมือนกัน ๑๐๐ เปอร์เช็นต์ เช่น ชื่อผู้ใช้)
Previous post
การแก้ปัญหา ORA-12154: TNS:Could not resolve the connect identifier specified ของ Navicat
Next post
การตรวจเช็คแบตเตอรี่เครื่องคอมพิวเตอร์โน้ตบุ๊กที่ง่ายและรวดเร็ว ด้วยโปรแกรม Battery Bar
You may also like
รู้จัก Web Application Security และแนวทางป้องกัน
Web Application Security เกี่ยวข้องกับการป้องกันและควบคุมความปลอดภัยในเว็บแอปพลิเคชัน เพื่อป้องกันการโจมตีจากผู้ไม่หวังดี การเจาะเว็บแอปพลิเคชันมักจะเปิดช่องโหว่ต่าง ๆ อาทิ: SQL Injection: การโจมตีในรูปแบบที่ผู้ไม่หวังดีสามารถใส่ข้อมูลที่ไม่ปกติลงในคำสั่ง SQL เพื่อควบคุมฐานข้อมูลของเว็บแอปพลิเคชัน Cross-Site Scripting (XSS): การโจมตีที่เกิดจากการใส่สคริปต์ที่ไม่ปลอดภัยลงในเว็บแอปพลิเคชัน ทำให้ผู้ไม่หวังดีสามารถเข้าถึงข้อมูลส่วนตัวของผู้ใช้งานได้: การโจมตีที่เกิดจากการใส่สคริปต์ที่ไม่ปลอดภัยลงในเว็บแอปพลิเคชัน ทำให้ผู้ไม่หวังดีสามารถเข้าถึงข้อมูลส่วนตัวของผู้ใช้งานได้ Cross-Site Request Forgery (CSRF): การโจมตีที่ผู้ไม่หวังดีสามารถส่งคำขอในนามของผู้ใช้งานที่เข้าสู่ระบบแล้ว โดยใช้การปลอมแปลงคำขอ Insecure Direct Object References: การโจมตีที่เกิดจากการอ้างอิงไปยังวัตถุที่ควรป้องกัน ทำให้ผู้ไม่หวังดีสามารถเข้าถึงข้อมูลที่ไม่ควรเปิดเผยได้ Security Misconfiguration: การตั้งค่าความปลอดภัยที่ไม่ถูกต้อง ทำให้เกิดช่องโหว่ใหม่ในเว็บแอปพลิเคชัน Broken Authentication and Session …
หลักการ 12 ข้อที่อยู่เบื้องหลังคำแถลงอุดมการณ์แห่งอไจล์
ผมได้ไปอ่าน คำแถลงอุดมการณ์แห่งอไจล์ ที่เว็บ https://agilemanifesto.org/iso/th/manifesto.html สรุปได้ว่า Agile Manifesto นั้น มีเป้าหมายในการปรับตัวเพื่อรองรับความต้องการของลูกค้า และต้องการพัฒนาซอฟต์แวร์ที่มีคุณภาพ โดยเน้นความสัมพันธ์ระหว่างบุคคลในทีมงาน รวมถึงการสื่อสารที่มีประสิทธิภาพ นอกจากนี้ ยังมุ่งหวังให้โครงการสามารถปรับตัวตามความต้องการใหม่ๆ และการเปลี่ยนแปลงในทันที นอกจากนี้ยังมี หลักการ 12 ข้อที่อยู่เบื้องหลังคำแถลงอุดมการณ์แห่งอไจล์ ซึ่งเป็นแนวคิดสำคัญในการนำ Agile มาใช้ในการพัฒนาซอฟต์แวร์ ซึ่งหลักการเหล่านี้เป็นเครื่องมือในการตัดสินใจและปฏิบัติงานให้สอดคล้องกับ Agile Manifesto ดังนี้ ความสำคัญสูงสุดของพวกเราคือความพึงพอใจของลูกค้าที่มีต่อการส่งมอบซอฟท์แวร์ที่มีคุณค่าต่อลูกค้า ตั้งแต่ต้นอย่างต่อเนื่อง ยอมรับการเปลี่ยนแปลงความต้องการของลูกค้าแม้ในช่วงท้ายของการพัฒนา เพราะอไจล์สามารถแปรเอาความเปลี่ยนแปลง มาเป็นความได้เปรียบในการแข่งขันของลูกค้า ส่งมอบซอฟท์แวร์ที่ใช้งานได้จริงอย่างสม่ำเสมอ อาจเป็นทุกสองถึงสามสัปดาห์หรือทุกสองถึงสามเดือน โดยควรทำให้ระยะเวลาระหว่างการส่งมอบนั้นสั้นที่สุดเท่าที่เป็นไปได้ ตัวแทนจากฝ่ายธุรกิจและนักพัฒนาจะต้องทำงานร่วมกันเป็นประจำทุกวันตลอดโครงการ ทำให้แน่ใจว่าสมาชิกโครงการเข้าใจและมีจุดมุ่งหมายของโครงการร่วมกันสร้างสภาวะแวดล้อม และให้การสนับสนุนในสิ่งที่พวกเขาต้องการและให้ความไว้วางใจแก่พวกเขาในการที่จะทำงานให้บรรลุเป้าหมายนั้น วิธีที่มีประสิทธิภาพและประสิทธิผลสูงสุดในการถ่ายทอดข้อมูลต่างๆ ไปสู่ทีมพัฒนาและภายในทีมพัฒนาเองคือการพูดคุยแบบซึ่งหน้า ซอฟท์แวร์ที่ใช้งานได้จริงเป็นตัวหลักในการวัดความก้าวหน้าของโครงการ …
ว่าด้วย Definition of Done
“The Definition of Done is a formal description of the state of the Increment when it meets the quality measures required for the product. The moment a Product Backlog item meets the Definition of Done, an Increment is born. The …