Poiché è necessario interrogare alcuni dati nel database, il contenuto del campo può contenere solo caratteri cinesi, lettere e numeri, e non può contenere simboli speciali (tranne che per dati speciali) Diamo prima un'occhiata agli effetti, come segue:
Risorse:
Come SQL del database interroga un campo con solo numeri, lettere o caratteri cinesi
- Contiene solo numeri e lettere
seleziona nome colonna dal nome della tabella dove REGEXP_LIKE(nome colonna,'^([\u4e00-\u9fa5]+)$')
--Contiene solo caratteri cinesi
seleziona il nome della colonna dal nome della tabella dove lunghezza(nome colonna)=lunghezza(ASCIISTR(nome colonna))-lunghezza(sostituire(ASCIISTR(nome colonna),'\',''))
Nota: La funzione asciistr() convertirà la stringa in un valore ASCII e, se il carattere è nella tabella dei codici ASCII, verrà convertito nel corrispondente carattere ASCII; Se non ce ne sono, come i caratteri cinesi e a larghezza intera, verrà convertito in formato \xxxx.
La funzione length() indica che la lunghezza cinese è 1, e il carattere cinese corrispondente a lengthb() è 2 byte. L'affermazione sopra serve a confrontare il numero di caratteri cinesi con il numero di \ dopo aver convertito in valori ASCII; se sono uguali, significa che sono tutti caratteri cinesi. (Se vuoi escludere l'influenza dei simboli a piena larghezza, devi prima cambiare il campo a metà larghezza, e la funzione è to_single_byte()).
sqlserver2008r2 cerca la prima posizione in cui compaiono numeri alfanumerici non cinesi
Ambiente: Il database di test sqlserver2008r2 ha un metodo di ordinamento Chinese_PRC_CI_AS, e non l'ho provato in altri ambienti Affermazione
Valore di reso: 4
La mia soluzione
(Fine)
|