Protože je potřeba dotazovat některá data v databázi, obsah pole může obsahovat pouze čínské znaky, písmena a čísla a nesmí obsahovat speciální symboly (kromě speciálních dat) Podívejme se nejprve na jejich účinky, a to následovně:
Prostředky:
Jak databázový SQL dotazuje pole pouze na čísla, písmena nebo čínské znaky
- Obsahuje pouze čísla a písmena
Vyberte název sloupce z názvu tabulky, kde REGEXP_LIKE(název sloupce,'^([\u4e00-\u9fa5]+)$')
--Obsahuje pouze čínské znaky
vyberte název sloupce z názvu tabulky, kde délka(název sloupce)=délka(ASCIISTR(název sloupce))-délka(nahraďte(ASCIISTR(název sloupce),'\','))
Poznámka: Funkce asciistr() převede řetězec na hodnotu ASCII a pokud je znak v ASCII kódové tabulce, bude převeden na odpovídající znak ASCII; Pokud žádné nejsou, například čínské a znaky v plné šířce, bude převedena do formátu \xxxx.
Funkce length() počítá, že čínská délka je 1 a čínský znak odpovídající lengthb() má 2 bajty. Výše uvedené tvrzení slouží k porovnání počtu čínských znaků s počtem \ po převodu na ASCII hodnoty; pokud jsou stejné, znamená to, že jsou všechny čínské znaky. (Pokud chcete vyloučit vliv symbolů plné šířky, musíte nejprve změnit pole na poloviční šířku a funkce je to_single_byte()).
sqlserver2008r2 hledá první místo, kde se objevují nečínská alfanumerická čísla
Prostředí: Testovací databáze sqlserver2008r2 má třídící metodu Chinese_PRC_CI_AS a v jiných prostředích jsem ji nezkoušel Znění
Návratnost: 4
Moje řešení
(Konec)
|