web-dev-qa-db-fra.com

IsEmpty fonctionne comme ISNULL dans SQL Server?

J'ai ce sql,

IF(@ID = '')
BEGIN
    SET @ID = NULL;
END

IF(@Name = '')
BEGIN
    SET @Name = NULL;
END

IF(@PhoneNumber = '')
BEGIN
    SET @PhoneNumber = NULL;     
END

IF(@Price = '')
BEGIN
    SET @Price = NULL;
END

IF(@NewPrice = '')
BEGIN
    SET @NewPrice = NULL;
END

IF(@ModelNumber = '')
BEGIN
    SET @ModelNumber = NULL;
END

IF(@SKU = '')
BEGIN
    SET @SKU = NULL;
END

Je cherche la fonction IsEmpty comme ISNULL. Afin que je puisse,

ISEMPTY(@SKU, NULL)

Est-ce possible en SQL?.

9
user960567

Essayez NULLIF comme ci-dessous

NULLIF(@SKU,'')
40
Parado

Utilisez SET @SKU = NULLIF(@SKU,'') pour définir @SKU sur null, où @SKU est égal à la valeur du deuxième argument.

IsEmpty n'est pas une fonction T-SQL intégrée, mais NULLIF peut être utilisé pour obtenir un comportement similaire.

7
Mentatmatt

S'il vous plaît essayez:

SET @YourValue=ISNULL(NULLIF(@YourValue,' '), NULL)

qui renvoie NULL si la valeur est NULL, vide ou espace.

Remarque: NULLIF renvoie la première expression si les deux expressions ne sont pas équivalentes. Si les expressions sont équivalentes, NULLIF renvoie une valeur NULL du type de la première expression.

7
TechDo

C'est peut-être ce que vous cherchez:

SET @SKU = CASE @SKU WHEN '' THEN NULL ELSE @SKU END

MODIFIER

Pour toutes vos variables ...

SELECT
  @ID = CASE @ID WHEN '' THEN NULL ELSE @ID END,
  @Name = CASE @Name WHEN '' THEN NULL ELSE @Name END,
  @PhoneNumber = CASE @PhoneNumber WHEN '' THEN NULL ELSE @PhoneNumber END,
  @Price = CASE @Price WHEN '' THEN NULL ELSE @Price END,
  @NewPrice = CASE @NewPrice WHEN '' THEN NULL ELSE @NewPrice END,
  @ModelNumber = CASE @ModelNumber WHEN '' THEN NULL ELSE @ModelNumber END,
  @SKU = CASE @SKU WHEN '' THEN NULL ELSE @SKU END¸

EDIT2

Si quelqu'un utilise le type de code que j'ai suggéré, oubliez-le et utilisez NULLIF () comme l'ont suggéré d'autres personnes. Je oublie complètement qu'il existe.

1
SELECT ISNULL( CASE StringColum1  WHEN '' THEN NULL ELSE textcolum1 END ,textcolum2) 
0
user6123020