|
|
Julkaistu 7.12.2018 13.24.31
|
|
|
|

Koska tietokannasta täytyy hakea tietoja, kentän sisältö voi sisältää vain kiinalaisia merkkejä, kirjaimia ja numeroita, eikä erityisiä symboleja (paitsi erikoisdataa) Katsotaanpa ensin vaikutuksia seuraavasti:
Varat:
Kuinka tietokanta SQL hakee kenttää, jossa on vain numeroita, kirjaimia tai kiinalaisia merkkejä
- Sisältää vain numeroita ja kirjaimia
Valitse sarakkeen nimi taulukon nimestä, missä REGEXP_LIKE(sarakkeen nimi,'^([\u4e00-\u9fa5]+)$')
--Sisältää vain kiinalaisia merkkejä
valitse sarakkeen nimi taulukon nimestä, missä length(column name)=length(ASCIISTR(column name))-length(replace(ASCIISTR(column name),'\',''))
Huomautus: Asciistr()-funktio muuntaa merkkijonon ASCII-arvoksi, ja jos merkki on ASCII-kooditaulukossa, se muunnetaan vastaavaksi ASCII-merkiksi; Jos niitä ei ole, kuten kiinalainen ja täysleveät merkit, se muunnetaan \xxxx-muotoon.
length()-funktio laskee, että kiinan pituus on 1, ja lengthb():n kiinalainen merkki on 2 tavua. Yllä oleva väite on verrata kiinalaisten merkkien määrää \:n lukumäärään ASCII-arvojen muuntamisen jälkeen; jos ne ovat yhtä suuret, se tarkoittaa, että kaikki ovat kiinalaisia merkkejä. (Jos haluat sulkea pois täysleveiden symbolien vaikutuksen, sinun täytyy ensin muuttaa kenttä puolileveydeksi, ja funktio on to_single_byte()).
sqlserver2008r2 etsii ensimmäistä paikkaa, jossa ei-kiinalaiset aakkosnumeeriset numerot esiintyvät
Ympäristö: Testitietokannassa sqlserver2008r2 on Chinese_PRC_CI_AS-lajittelumenetelmä, enkä ole kokeillut sitä muissa ympäristöissä Lausunto
Palautusarvo: 4
Ratkaisuni
(Loppu)
|
Edellinen:Palkintokysely, mistä tiesit tästä sivustosta?Seuraava:Muokkaa omaan yhdyskäytävään, niin sisäiset ja ulkoiset verkot ovat päällä samaan aikaan, kunhan on kaksi verkkokorttia
|