Ker morate v bazi podatkov poizvedovati, lahko vsebina polja vsebuje le kitajske znake, črke in številke ter ne sme vsebovati posebnih simbolov (razen posebnih podatkov) Najprej si poglejmo učinke, kot sledi:
Sredstva:
Kako SQL baze podatkov poizveduje polje, ki vsebuje samo številke in črke ali kitajske znake
- Vsebuje le številke in črke
Izberite ime stolpca iz imena tabele, kjer REGEXP_LIKE(ime stolpca,'^([\u4e00-\u9fa5]+)$')
--Vsebuje le kitajske znake
izberi ime stolpca iz imena tabele, kjer dolžina(ime stolpca)=dolžina(ASCIISTR(ime stolpca))-dolžina(zamenjaj(ASCIISTR(ime stolpca),'\','))
Opomba: Funkcija asciistr() pretvori niz v ASCII vrednost, in če je znak v ASCII kodni tabeli, se pretvori v ustrezen znak ASCII; Če jih ni, kot so kitajski in znaki v polni širini, se pretvori v format \xxxx.
Funkcija length() šteje, da je kitajska dolžina 1, kitajski znak, ki ustreza lengthb(), pa 2 bajta. Zgornja trditev pomeni primerjavo števila kitajskih znakov s številom \ po pretvorbi v ASCII vrednosti; če so enaki, pomeni, da so vsi kitajski znaki. (Če želite izključiti vpliv simbolov polne širine, morate najprej spremeniti polje na polovično širino, funkcija pa je to_single_byte()).
sqlserver2008r2 išče prvo mesto, kjer se pojavijo ne-kitajska alfanumerična števila
Okolje: Testna baza podatkov sqlserver2008r2 ima metodo razvrščanja Chinese_PRC_CI_AS, ki je nisem preizkusil v drugih okoljih Izjava
Donosna vrednost: 4
Moja rešitev
(Konec)
|