Comme vous devez interroger certaines données dans la base de données, le contenu du champ ne peut contenir que des caractères chinois, des lettres et des chiffres, et ne peut pas contenir de symboles spéciaux (sauf pour des données spéciales) Examinons d’abord les effets, comme suit :
Ressources:
Comment SQL de base de données interroge un champ avec uniquement des chiffres, des lettres ou des caractères chinois
- Ne contient que des chiffres et des lettres
sélectionnez le nom de la colonne à partir du nom de la table où REGEXP_LIKE(nom de la colonne,'^([\u4e00-\u9fa5]+)$')
--Ne contient que des caractères chinois
sélectionnez le nom de la colonne à partir du nom de la table où longueur(nom de la colonne)=longueur(ASCIISTR(nom de la colonne))-longueur(replacer(ASCIISTR(nom de la colonne),'\',''))
Note : La fonction asciistr() convertira la chaîne en une valeur ASCII, et si le caractère se trouve dans la table de codes ASCII, il sera converti en le caractère correspondant ASCII ; S’il n’y en a pas, comme les caractères chinois et pleine largeur, il sera converti au format \xxxx.
La fonction length() indique que la longueur chinoise est 1, et le caractère chinois correspondant à lengthb() est de 2 octets. L’énoncé ci-dessus sert à comparer le nombre de caractères chinois avec le nombre de \ après conversion en valeurs ASCII ; s’ils sont égaux, cela signifie qu’ils sont tous des caractères chinois. (Si vous voulez exclure l’influence des symboles pleine largeur, il faut d’abord changer le champ en demi-largeur, et la fonction est to_single_byte()).
sqlserver2008r2 cherche la première position où des nombres alphanumériques non chinois apparaissent
Environnement : La base de données de test sqlserver2008r2 propose une méthode de tri de Chinese_PRC_CI_AS, et je ne l’ai pas essayée dans d’autres environnements Énoncé
Valeur de retour : 4
Ma solution
(Fin)
|