Утверждение нулевого значения - PullRequest
0 голосов
/ 28 декабря 2010

Я создал таблицу с именем table1, и в ней есть 4 столбца с именами, ID, описанием и датой.

Я создал их как Name varchar (50) null, ID int null, Description varchar (50) null, Дата datetime null

Я вставил в таблицу table1 запись со значениями ID и Description.Итак, теперь моя таблица1 выглядит следующим образом:

Name   ID   Description  Date

Null    1    First       Null

Один из них попросил меня изменить таблицу таким образом, чтобы столбцы Имя и Дата имели значения Null вместо Text Null.Я не знаю, в чем разница между этими

Я имею в виду, может ли кто-нибудь объяснить мне разницу между этими утверждениями:

ВЫБРАТЬ * ИЗ ТАБЛИЦЫ1, ГДЕ ИМЯ НУЛЬ

ВЫБРАТЬ * ИЗ ТАБЛИЦЫ 1 ГДЕ ИМЯ = 'NULL'

ВЫБРАТЬ * ИЗ ТАБЛИЦЫ 1 ГДЕ ИМЯ = ''

Может кто-нибудь объяснить мне?

Ответы [ 7 ]

2 голосов
/ 28 декабря 2010

В CREATE TABLE значение NULL или NOT NULL здесь varchar(50) null является ограничением , которое определяет, разрешены ли значения NULL.NOT NULL означает нет.

Когда вы вставляли данные, какой оператор вы выполняли?

INSERT TABLE1 VALUES (Null, 1, First, Null)

или

INSERT TABLE1 VALUES ('Null', 1, First, 'Null')
  • В первом используется ключевое словоNULL, вставляет NULL (не нулевое значение: нет такого понятия, возможно).Никакие значения не сохраняются, кроме как в полях растрового изображения NULL
  • Второе имеет строку «null», а длина символов N, U, L, L + 2 сохраняется

Когда вы запускаете SELECT * FROM TABLE1, клиентские инструменты будут показывать NULL.

Чтобы проверить, действительно ли у вас NULL или строка NULL, выполните эту команду

SELECT ISNULL(name, 'fish'), ISNULL(date, GETDATE())  FROM TABLE1

Для SELECTs

--null symbols. No value stored
SELECT * FROM TABLE1 WHERE NAME IS NULL
--string null
SELECT * FROM TABLE1 WHERE NAME = 'NULL'
--empty string
SELECT * FROM TABLE1 WHERE NAME = ' '

Примечание: нулевой символ / значение не является пустой строкой.Это не имеет значения и не будет сравниваться.Даже для самого себя.

Что касается вашего администратора баз данных, приведенный выше код с ISNULL определит, что именно будет сохранено.

Редактировать: если вы храните нулевой символ / значение, тогда ваш администратор баз данных должен прочитать" null bitmap "

1 голос
/ 28 декабря 2010

Один из них попросил меня изменить таблицу таким образом, чтобы столбцы Имя и Дата имели значения Null вместо Text Null.Я не знаю, в чем разница между ними.

Ключевое слово NULL указывает на отсутствие любого значения - значение неизвестно.

Но это не помешает кому-то хранить буквы, которые пишут «NULL», предоставляя тип данных (чего не будут INT и DATETIME).По этой причине такие операторы, как IS NULL, не будут работать с текстом, в котором указано «NULL», и наоборот - поиск строк с использованием: ... LIKE '%NULL%' не будет возвращать записи со значениями NULL.

Тип данных столбца имеет значение в отношении NULL в SQL Server.В операторе UNION необходимо привести NULL к соответствующему типу данных - по умолчанию для NULL установлено значение INT:

SELECT CAST('2011-01-01 00:00:00' AS DATETIME)
UNION
SELECT CAST(NULL AS DATETIME)

На основе предоставленной информации о столбцах и выходных данных администратор БДПохоже, он просит вас изменить текст, который клиент использует для подключения к SQL Server с отображениями, когда в наборе результатов встречается значение NULL.Напоминает мне мою первую работу по мытью посуды, и меня попросили достать левую лопаточку ...

1 голос
/ 28 декабря 2010

Данные представляют собой нули. Текст 'Null' - это инструмент запроса, отображающий текст.

0 голосов
/ 28 декабря 2010

SELECT * FROM TABLE1 WHERE NAME IS NULL

Возвращает все строки, где Имя равно NULL

SELECT * FROM TABLE1 WHERE NAME = 'NULL'

Возвращает все строки, где Имя равно строке 'NULL',Нулевые значения не возвращаются

SELECT * FROM TABLE1 WHERE NAME = ' '

Возвращает все строки, где Имя равно ровно одному пробелу '', Нулевые значения не возвращаются

Если вы запуститеутверждение, которое может помочь прояснить, когда его ноль, а когда нет

select 
*,
case 
    WHEN name is null THEN  'Its Null alright' 
        ELSE 'It has a value'
END 
FROM TABLE1
0 голосов
/ 28 декабря 2010

NULL, в программном обеспечении, не имеет значения.Предполагая, что вы вставляете столбцы, используя строку со значением null, используйте нулевую константу.например,

INSERT INTO table1 (Name,ID,Description,Date) VALUES (NULL,1,'First',NULL);

Обратите внимание, что NULL является константой в SQL, а не словом "NULL" в строке.

0 голосов
/ 28 декабря 2010

Строка "Null" является строкой.

Значение NULL (или Null, или null, SQL не учитывает регистр, когда речь идет об этих вещах) используется для обозначения неизвестного значения. Это пустой набор значений, если хотите.

http://www.w3schools.com/sql/sql_null_values.asp

0 голосов
/ 28 декабря 2010

AFAIC, между NULL нет различий. Существуют разные типы столбцов. Но пока столбец является текстовым типом данных и имеет значение NULL, это текст NULL.

Иногда возникают вопросы о пустых строках ("") вместо NULL, но описание, которое вы используете, похоже, не относится к этому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...