Comment vérifier la valeur null/vide/espaces valeurs avec un seul test?
Je voudrais écrire une instruction SELECT qui utilise seulement un test de colonnes de retour avec aucune valeur (null, vide, ou tous les espaces).
J'ai pensé que ce serait le travail:
SELECT column_name from table_name WHERE column_name NOT LIKE '%_%';
Mais cela ne fonctionne pas pour les valeurs NULL.
Bien sûr, je peux ajouter
OR column_name IS NULL
et il va fonctionner, mais je voudrais un chemin qui utilise un seul test.
- Connexes: stackoverflow.com/questions/4042496/...
- N'est-il pas souhaitable d'avoir plusieurs tests? c'est à dire plus de granularité = un meilleur retour d'informations aux utilisateurs sur la façon de corriger les données.
- En général, il peut être préférable d'avoir plus de précision, mais je travaille avec une base de code et je veux imiter le code existant de la structure d'aussi près que possible. Le code actuel ne fait qu'un seul essai, alors que je cherchais une solution qui a également eu un seul test.
Vous devez vous connecter pour publier un commentaire.
Fonctionnellement, vous devriez être en mesure d'utiliser
Le problème, c'est qu'un index sur COLUMN_NAME ne seraient pas utilisés. Vous auriez besoin d'avoir une fonction d'index de base de la finition(nom_colonne), si c'est un sélectif de la condition.
ISNULL(column_name, '')
sera de retour " si column_name est NUL, sinon il sera de retour column_name.Mise à JOUR
Dans Oracle, vous pouvez utiliser
NVL
pour obtenir les mêmes résultats.WHERE RTRIM(ISNULL(column_name, '')) LIKE ''
Lors de la vérification de
null or Empty
valeur pour une colonne, j'ai remarqué qu'il y a quelques inquiétudes de soutien dans différentes Bases de données.Chaque Base de données ne prend pas en charge
TRIM
méthode.Ci-dessous est la matrice afin de comprendre les méthodes prises en charge par les différentes bases de données.
La fonction TRIM dans SQL est utilisé pour enlever spécifié préfixe ou un suffixe à partir d'une chaîne. Le motif le plus fréquent retiré des espaces blancs. Cette fonction est appelée différemment dans les différentes bases de données:
TRIM(), RTRIM(), LTRIM()
RTRIM(), LTRIM()
TRIM(), RTRIM(), LTRIM()
Comment Vérifier Vide/Null/Espaces :-
La syntaxe de ces fonctions de découpage sont:
Utilisation de la Garniture à l'enregistrement
SELECT FirstName FROM UserDetails WHERE TRIM(LastName) IS NULL
Utilisation de LTRIM et RTRIM check-
SELECT FirstName FROM UserDetails WHERE LTRIM(RTRIM(LastName)) IS NULL
Au-dessus des deux côtés, même résultat, en fonction du support de Base de données. Elle retourne le
FirstName
deUserDetails
table si il y a un videLastName
En espérant que cela aidera les autres aussi 🙂
La NULLIF fonction de convertir n'importe quelle valeur de la colonne avec seulement les espaces dans une valeur NULL. Les œuvres de T-SQL et SQL Server 2008 & jusqu'.
Cette phpMyAdmin requête est de retour ces lignes, qui ne sont PAS null ou vide ou tout simplement des espaces:
si vous souhaitez sélectionner des lignes qui sont nuls/vide/juste espaces retirez simplement PAS.
Utiliser en dessous de requête et il fonctionne
Chaque personnes suggestion pour exécuter une requête dans Oracle pour trouver les enregistrements dont le champ spécifique est juste vide, (ce qui n'est pas compris (null) ou dans tout autre domaine juste une ligne vide) ne fonctionne pas. J'ai essayé tous les suggéré de code. Pense que je vais continuer à chercher en ligne.
*****Mise à JOUR*****
J'ai essayé et cela a fonctionné, je ne sais pas pourquoi cela ne fonctionnerait pas si < 1 mais pour une raison < 2 travaillé et renvoyé uniquement les enregistrements dont le champ est juste vide
sélectionnez [nomrubrique] à partir de [nom de la table], où la LONGUEUR(columnName) < 2 ;
Je devine ce que le script qui a été utilisé pour convertir les données sur a laissé quelque chose dans le domaine, même si elle montre vierge, c'est ma conjecture de toute façon pourquoi le < 2 fonctionne mais pas < 1
Toutefois, si vous avez d'autres valeurs dans la colonne champ qui est à moins de deux personnages, alors vous pourriez avoir à trouver une autre solution. Si il n'y a pas beaucoup d'autres caractères, puis vous pouvez les distinguer.
Espère que ma solution vous aide à quelqu'un d'autre un jour.
Ce que j'utilise pour
IsNotNullOrEmptyOrWhiteSpace
en T-SQL est:Comme dans Oracle, vous pouvez utiliser la fonction NVL dans MySQL, vous pouvez utiliser IFNULL(columnaName, newValue) pour atteindre le résultat souhaité, comme dans cet exemple
vous pouvez utiliser