CHAR() ফাংশন সংখ্যাকে ক্যারেক্টারে রূপান্তর করে। এর বিপরীত কাজ করে ASCII() (বামের ক্যারেক্টারের ASCII ভ্যালু) এবং ORD() (বামের ক্যারেক্টারের কোড পয়েন্ট, মাল্টিবাইট সাপোর্টসহ)।
টেবিল তৈরি ও ডেটা ইনসার্ট
mysql> CREATE TABLE DemoTable (Value INT, Value1 CHAR(1), Value2 CHAR(1)); Query OK, 0 rows affected (0.80 sec)
mysql> INSERT INTO DemoTable VALUES (65, 'A', 'A'); Query OK, 1 row affected (0.18 sec) mysql> INSERT INTO DemoTable VALUES (97, 'a', 'a'); Query OK, 1 row affected (0.13 sec)
রেকর্ড দেখানো
mysql> SELECT * FROM DemoTable;
আউটপুট:
+-------+--------+--------+ | Value | Value1 | Value2 | +-------+--------+--------+ | 65 | A | A | | 97 | a | a | +-------+--------+--------+ 2 rows in set (0.00 sec)
CHAR(), ASCII(), ORD() একসাথে ব্যবহার
mysql> SELECT CHAR(Value), ASCII(Value1), ORD(Value2) FROM DemoTable;
ফলাফল:
+-------------+---------------+-------------+ | CHAR(Value) | ASCII(Value1) | ORD(Value2) | +-------------+---------------+-------------+ | A | 65 | 65 | | a | 97 | 97 | +-------------+---------------+-------------+ 2 rows in set (0.03 sec)
পার্থক্য: ASCII() বনাম ORD()
| ফাংশন | বর্ণনা | বহুবাইট ক্যারেক্টারের জন্য |
|---|---|---|
| ASCII(str) | স্ট্রিংয়ের প্রথম ক্যারেক্টারের ASCII ভ্যালু (০-২৫৫) রিটার্ন করে। | প্রথম বাইটের ভ্যালু রিটার্ন করে (আংশিক কোড পয়েন্ট)। |
| ORD(str) | স্ট্রিংয়ের প্রথম ক্যারেক্টারের ইউনিকোড কোড পয়েন্ট রিটার্ন করে। | পুরো কোড পয়েন্ট রিটার্ন করে (সঠিক)। |
উদাহরণ: বাংলা ক্যারেক্টার 'অ' (U+0985)
SELECT ASCII('অ'), ORD('অ'), CHAR(2437); -- ASCII=224 (প্রথম বাইট), ORD=2437 (পূর্ণ কোড পয়েন্ট)
সুপারিশ: ইউনিকোড/বহুবাইট ডেটার জন্য সবসময় ORD() ব্যবহার করুন।