DEV Community

MrChoke
MrChoke

Posted on • Originally published at Medium on

5

ครั้งแรกกับ PostgreSQL (Thai Sorting)

เพิ่งได้ลอง PostgreSQL ครั้งแรกเลยเล่นเรียงลำดับภาษาไทยดู ไม่แน่ใจว่าเข้าใจถูกไหมใครมีความรู้แนะนำด้วยนะครับ

สภาพแวดล้อม

Postgre docker image 13

postgres - Docker Hub

แบบแรก

start container แบบไม่ปรับแต่งอะไรเลย

COLLATE SUPPORT

จะมี th-TH-x-icu มาให้โดยปริยาย

สร้าง Table

CREATE TABLE t1 (
  id SERIAL PRIMARY KEY,
  st VARCHAR(255)
);
Enter fullscreen mode Exit fullscreen mode

Insert ข้อมูล

INSERT
   INTO t1(st) 
   VALUES ('เฮ'),('โก'),('กาง'),('ขำ'),('๘'),('ฮา'),('กุม'),('แรง'),('A'),('Z'),('8'),('1'),('๑');
Enter fullscreen mode Exit fullscreen mode

ลอง Order แบบใช้ค่าปริยาย

ลอง Order โดยระบุ COLLATE th-TH-x-icu

จะเห็นความแตกต่างคือ ลำดับการเรียงช่วงภาษาอังกฤษกับภาษาไทยต่างกัน ICU จะเอาภาษาไทยขึ้นก่อนส่วนค่าปริยายจะเอาภาษาอังกฤษขึ้นก่อน

แบบที่สอง

ผมเลยสงสัยว่าถ้าเรากำหนด locale ของระบบจะมีความแตกต่างไหม ?

สร้าง Image ใหม่ โดยเพิ่ม th_TH.UTF-8 ให้กับระบบ

คราวนี้ COLLATE SUPPORT จะมี th_TH เพิ่มขึ้นมา

ลองสร้าง table และ Order เปรียบเทียบกัน

COLLATE = C

COLLATE =e n_US

COLLATE ICU vs th_TH

ถ้าดูตามผลที่ได้สรุปว่าถึงจะมี locale th_TH.UTF-8 หรือไม่การเรียงลำดับก็ไม่ต่างกับ UTF-8 ปกติแต่ Thai ICU จะต่างออกไปสำหรับภาษาไทยผสมกับภาษาอังกฤษ

Image of Timescale

Timescale – the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free

Top comments (1)

Collapse
 
stankukucka profile image
Stan Kukučka

@mrchoke may be interesting for you this Thai article

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Engage with a sea of insights in this enlightening article, highly esteemed within the encouraging DEV Community. Programmers of every skill level are invited to participate and enrich our shared knowledge.

A simple "thank you" can uplift someone's spirits. Express your appreciation in the comments section!

On DEV, sharing knowledge smooths our journey and strengthens our community bonds. Found this useful? A brief thank you to the author can mean a lot.

Okay