आप केस संवेदी collation का उपयोग करना चाह सकते हैं। . मेरा मानना है कि डिफ़ॉल्ट केस असंवेदनशील है। उदाहरण:
CREATE TABLE my_table (
id int,
name varchar(50)
) CHARACTER SET latin1 COLLATE latin1_general_cs;
INSERT INTO my_table VALUES (1, 'SomeThing');
INSERT INTO my_table VALUES (2, 'something');
INSERT INTO my_table VALUES (3, 'SOMETHING');
INSERT INTO my_table VALUES (4, 'SOME4THING');
फिर:
SELECT * FROM my_table WHERE name REGEXP '^[A-Z]+$';
+------+-----------+
| id | name |
+------+-----------+
| 3 | SOMETHING |
+------+-----------+
1 row in set (0.00 sec)
यदि आप पूरी तालिका के लिए केस संवेदी संयोजन का उपयोग नहीं करना चाहते हैं, तो आप COLLATE
खंड के रूप में @kchau ने दूसरे उत्तर में सुझाव दिया
।
आइए केस असंवेदनशील संयोजन का उपयोग करके तालिका के साथ प्रयास करें:
CREATE TABLE my_table (
id int,
name varchar(50)
) CHARACTER SET latin1 COLLATE latin1_general_ci;
INSERT INTO my_table VALUES (1, 'SomeThing');
INSERT INTO my_table VALUES (2, 'something');
INSERT INTO my_table VALUES (3, 'SOMETHING');
INSERT INTO my_table VALUES (4, 'SOME4THING');
यह बहुत अच्छा काम नहीं करेगा:
SELECT * FROM my_table WHERE name REGEXP '^[A-Z]+$';
+------+-----------+
| id | name |
+------+-----------+
| 1 | SomeThing |
| 2 | something |
| 3 | SOMETHING |
+------+-----------+
3 rows in set (0.00 sec)
लेकिन हम COLLATE
. का उपयोग कर सकते हैं नाम फ़ील्ड को केस सेंसिटिव कॉलेशन से मिलाने के लिए क्लॉज:
SELECT * FROM my_table WHERE (name COLLATE latin1_general_cs) REGEXP '^[A-Z]+$';
+------+-----------+
| id | name |
+------+-----------+
| 3 | SOMETHING |
+------+-----------+
1 row in set (0.00 sec)