Как ввести значение ‘NULL’ в столбец nvarchar в SQL Server?

#sql #sql-server #tsql

#sql #sql-сервер #tsql

Вопрос:

У меня есть требование вставить буквальное значение ‘NULL’ в столбец nvarchar в качестве значения по умолчанию. Но когда я вставляю записи, по умолчанию используется значение db NULL вместо буквального ‘NULL’. Может кто-нибудь сказать мне, где я ошибаюсь?

Комментарии:

1. Кстати, какова цель по умолчанию для столбца 'NULL' вместо NULL ? Для меня это звучит как сомнительное решение.

2. @djacobson — Требование к нам отправлять ‘NULL’ заключается в том, что данные, которые мы отправляем, используются другим приложением, которому нужно видеть текст NULL, а не пустой тег.

3. Ну, что ты можешь сделать? Достаточно справедливо. :S

Ответ №1:

Итак, вы хотите, чтобы была вставлена фактическая строка «NULL»? Попробуйте что-то вроде этого:

 create table NullTable
(
    nvarchar(100) not null default 'NULL',
    .... -- your other fields
)
  

РЕДАКТИРОВАТЬ: вот полное решение

 create table InsertNull
(
    Nullfield nvarchar(100) not null default 'NULL',
    someint int not null
)
go

insert into insertnull(someint)
select 20

select *
from InsertNull
  

Комментарии:

1. shark- У меня есть таблица с такими же настройками. В том же примере скажем, что наша таблица содержит два поля field1 с значением по умолчанию ‘NULL’, field2 INT . если я выполняю запрос say — insert в nulltable (field1) выберите 20, то field1 по-прежнему отображается как нулевое значение DB

2. @VKarthik посмотрите мою правку. Я только что запустил это, и в результирующем запросе отображается строка ‘NULL’.

3. @VKarthik вы хотите, чтобы одинарные кавычки тоже хранились в столбце? Потому что у Shark по умолчанию будет строка NULL, а не DB NULL .

Ответ №2:

Обратите внимание на кавычки:

 INSERT INTO yourtable (varcharfield) VALUES ('NULL'); // string null
INSERT INTO yourtable (varcharfield) VALUES (NULL); // actual null
  

Комментарии:

1. Я думаю, что OP хочет, чтобы значением поля по умолчанию была строка ‘NULL’, а не просто вставка значения в INSERT оператор.

Ответ №3:

Если установить значение по умолчанию в коде вместо конструктора, это должно сработать.

 ALTER TABLE [myTable] ADD  DEFAULT ('NULL') FOR [TextColumn]