Kuna andmebaasist tuleb pärida mõningaid andmeid, võib väli sisaldada ainult hiina märke, tähti ja numbreid ning erisümboleid (välja arvatud eriandmed) Vaatame esmalt mõju järgmiselt:
Ressursse:
Kuidas andmebaasi SQL pärib välja ainult numbrite ja tähtede või hiina märkidega
- Sisaldab ainult numbreid ja tähti
Vali veeru nimi tabeli nimest, kus REGEXP_LIKE(veeru nimi,'^([\u4e00-\u9fa5]+)$')
--Sisaldab ainult hiina märke
vali veeru nimi tabeli nimest, kus length(column name)=length(ASCIISTR(column name))-length(replace(ASCIISTR(column name),'\',''))
Märkus: Asciistr() funktsioon teisendab stringi ASCII väärtuseks ning kui märk on ASCII kooditabelis, teisendatakse see vastavaks ASCII märgiks; Kui neid pole, näiteks hiina ja täislaiusega märgid, teisendatakse see \xxxx formaadi.
Funktsioon length() loendab, et hiina pikkus on 1, ja hiina märk, mis vastab lengthb()-le, on 2 baiti. Ülaltoodud väide on võrrelda hiina märkide arvu \ arvuga pärast ASCII väärtusteks teisendamist; kui need on võrdsed, tähendab see, et kõik on hiina märgid. (Kui soovid välistada täislaiuse sümbolite mõju, tuleb esmalt muuta väli poole laiuseks ja funktsioon on to_single_byte()).
sqlserver2008r2 otsib esimest kohta, kus esinevad mitte-hiina tähestikunumbrilised numbrid
Keskkond: Testandmebaasil sqlserver2008r2 on Chinese_PRC_CI_AS sorteerimismeetod ja ma pole seda teistes keskkondades proovinud Avaldus
Tagastusväärtus: 4
Minu lahendus
(Lõpp)
|