Оскільки потрібно запитувати дані в базі даних, вміст поля може містити лише китайські ієрогліфи, літери та цифри, і не може містити спеціальних символів (окрім спеціальних даних) Давайте спочатку розглянемо їхні ефекти, а так:
Ресурси:
Як SQL у базі даних запитує поле лише з числами та літерами або китайськими ієрогліфами
- Містить лише цифри та літери
Виберіть назву стовпця з назви таблиці, де REGEXP_LIKE(Назва стовпця,'^([\u4E00-\u9fa5]+)$')
--Містить лише китайські ієрогліфи
виберіть назву стовпця з назви таблиці, де довжина(назва стовпця)=довжина(ASCIISTR(назва стовпця))-довжина(replace(ASCIISTR(назва стовпця),'\',''))
Примітка: функція asciistr() перетворює рядок у ASCII-значення, і якщо символ знаходиться в ASCII-кодній таблиці, він буде конвертований у відповідний символ ASCII; Якщо їх немає, наприклад, китайські та повноширинні символи, він буде конвертований у формат \xxxx.
Функція length() рахує, що китайська довжина дорівнює 1, а китайський ієрогліф, що відповідає довжині b(), — 2 байти. Вищезазначене твердження полягає в порівнянні кількості китайських ієрогліфів із кількістю \ після конвертації у ASCII-значення, якщо вони рівні, це означає, що всі вони є китайськими ієрогліфами. (Якщо ви хочете виключити вплив символів повної ширини, спочатку потрібно змінити поле на половинну ширину, і функція має to_single_byte()).
sqlserver2008r2 шукає першу позицію, де з'являються некитайські алфавітно-цифрові числа
Навколишнє середовище: Тестова база даних sqlserver2008r2 має метод сортування Chinese_PRC_CI_AS, і я не пробував його в інших середовищах Твердження
Повернене значення: 4
Моє рішення
(Кінець)
|