web-dev-qa-db-ja.com

SQL ServerのISNULLのようなIsEmpty関数?

私はこの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

ISNULLのようなIsEmpty関数を探しています。私ができるように、

ISEMPTY(@SKU, NULL)

これはSQLで可能ですか?.

11
user960567

[〜#〜] nullif [〜#〜] を試してください

NULLIF(@SKU,'')
44
Parado

してみてください:

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

値がNULL、空、またはスペースの場合、NULLを返します。

注:2つの式が等しくない場合、NULLIFは最初の式を返します。式が等しい場合、NULLIFは最初の式の型のNULL値を返します。

8
TechDo

SET @SKU = NULLIF(@SKU,'')を使用して@SKUをnullに設定します。@ SKUは2番目の引数の値に等しくなります。

IsEmptyは組み込みのT-SQL関数ではありませんが、NULLIFを使用して同様の動作を実現できます。

7
Mentatmatt

select句で以下を試してください。

select ISNULL( nullif(EmptyOrNullOrBlankColumn,'' ),NULL)

以下のWhere句。

where ISNULL( nullif(EmptyOrNullOrBlankColumn,'' ),NULL) is not null
1
ramit girdhar

これはあなたが探しているものかもしれません:

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

[〜#〜] edit [〜#〜]

すべての変数について...

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

誰かが私が提案した種類のコードを使用する場合、他の人が示唆したようにそれを忘れてNULLIF()を使用してください。それが存在することを完全に忘れました。

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