|
|
Postat pe 07.12.2018 13:24:31
|
|
|
|

Deoarece trebuie să interogați unele date în baza de date, conținutul câmpului poate conține doar caractere chinezești, litere și numere și nu poate conține simboluri speciale (cu excepția datelor speciale) Să aruncăm mai întâi o privire asupra efectelor, după cum urmează:
Resurse:
Cum interoghează SQL baza de date un câmp doar cu numere și litere sau caractere chinezești
- Conține doar cifre și litere
selectează numele coloanei din numele tabelului unde REGEXP_LIKE(numele coloanei,'^([\u4e00-\u9fa5]+)$')
--Conține doar caractere chinezești
selectează numele coloanei din numele tabelului, unde lungime(numele coloanei)=lungime(ASCIISTR(numele coloanei))-lungime(înlocuire(ASCIISTR(numele coloanei),'\',''))
Notă: Funcția asciistr() va converti șirul într-o valoare ASCII, iar dacă caracterul se află în tabelul de coduri ASCII, va fi convertit în caracterul corespunzător ASCII; Dacă nu există, cum ar fi caracterele chinezești și cele cu lățime completă, va fi convertită în formatul \xxxx.
Funcția length() consideră că lungimea chineză este 1, iar caracterul chinezesc corespunzător lui lengthb() este 2 octeți. Afirmația de mai sus este pentru a compara numărul de caractere chinezești cu numărul de \ după conversia la valori ASCII; dacă sunt egale, înseamnă că toate sunt caractere chinezești. (Dacă vrei să excluzi influența simbolurilor cu lățime completă, trebuie mai întâi să schimbi câmpul la jumătate de lățime, iar funcția este to_single_byte()).
sqlserver2008r2 caută prima poziție unde apar numere alfanumerice non-chineze
Mediu: Baza de date de testare sqlserver2008r2 are o metodă de sortare Chinese_PRC_CI_AS și nu am încercat-o în alte medii Enunț
Valoare de returnare: 4
Soluția mea
(Sfârșit)
|
Precedent:Chestionar de premiu, cum ai aflat de acest site?Următor:Modifică pe propriul tău gateway, iar rețelele interne și externe sunt activate simultan, cu condiția să existe două plăci de rețea
|