#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]