Keďže je potrebné dotazovať niektoré údaje v databáze, obsah poľa môže obsahovať iba čínske znaky, písmená a čísla a nesmie obsahovať špeciálne symboly (okrem špeciálnych údajov) Pozrime sa najprv na účinky, nasledovne:
Zdroje:
Ako databázový SQL dotazuje pole len na čísla, písmená alebo čínske znaky
- Obsahuje iba čísla a písmená
Vyberte názov stĺpca z názvu tabuľky, kde REGEXP_LIKE(názov stĺpca,'^([\u4e00-\u9fa5]+)$')
--Obsahuje iba čínske znaky
vyberte názov stĺpca z názvu tabuľky, kde dĺžka(názov stĺpca)=dĺžka(ASCIISTR(názov stĺpca))-dĺžka(nahraďte(ASCIISTR(názov stĺpca),'\','))
Poznámka: Funkcia asciistr() prevedie reťazec na hodnotu ASCII a ak sa znak nachádza v tabuľke ASCII kódu, bude prevedený na príslušný znak ASCII; Ak žiadne nie sú, napríklad čínske a znaky v plnej šírke, bude prevedený do formátu \xxxx.
Funkcia length() počíta, že čínska dĺžka je 1 a čínsky znak zodpovedajúci lengthb() má 2 bajty. Vyššie uvedené tvrdenie slúži na porovnanie počtu čínskych znakov s počtom \ po konverzii na ASCII hodnoty; ak sú rovnaké, znamená to, že všetky sú čínske znaky. (Ak chcete vylúčiť vplyv symbolov v plnej šírke, najprv musíte zmeniť pole na polovičnú šírku a funkcia je to_single_byte()).
sqlserver2008r2 hľadá prvú pozíciu, kde sa objavujú nečínske alfanumerické čísla
Prostredie: Testovacia databáza sqlserver2008r2 má triediaci spôsob Chinese_PRC_CI_AS, ktorý som v iných prostrediach neskúšal Vyjadrenie
Výnosná hodnota: 4
Moje riešenie
(Koniec)
|