2016-07-12 2 views
-1

Я только начал изучать SQL меньше, чем неделю назад, и я заметил, что в SQL Server строка может быть типа nvarchar(5) или nvarchar(20) или любого другого номера. Мне просто интересно, какая разница между nvarchar различного количества?В чем разница между nvarchar разного числа?

+3

Возможный дубликат [Каковы основные различия в производительности между типами данных varchar и nvarchar SQL Server?] (Http://stackoverflow.com/questions/35366/what-are-the-main-performance-differences-between- varchar-and-nvarchar-sql-serve) – theinarasu

+2

@theinarasu, по крайней мере, вопрос не о перформансах, а синтаксисе языка. –

ответ

1

Это декларативное заявление, на которое вы ссылаетесь.

По заявлению, это метод объявления. MySQL имеет разные правила в зависимости от контекста, поэтому стоит потратить время на знание синтаксиса.

В SQL, например MySQL, существуют некоторые типы данных, которые могут иметь переменную длину.

То, что вы видите, является декларативным заявлением, в котором NVARCHAR имеет разную длину.

<DATA TYPE> (<character length>) 
NVARCHAR(5) -- 5 unicode characters long. 
NVARCHAR(20) -- unicode length of 20 characters 

Если вы не указали длину, эти типы данных будут иметь длину одного символа. Поэтому стандарт позволяет объявлять круглые скобки.

Примеры синтаксических различий:

DECLARE @string NVARCHAR(5); 

SELECT CAST(<some_column> AS NVARCHAR(20) 
FROM <some_table> 

CREATE TABLE <schema_name>.<table_name> 
(firstColumn NVARCHAR(20) NOT NULL 
, secondColumn INT not null) 

Как и многие другие языки, если не является сдерживающим фактором для предотвращения перелива ввода любой вставки символа больше, чем длина становится TRUNCATED ... или отрезать, чтобы поместиться внутри колонка.

1

Число представляет собой длину содержимого. В столбце или переменной, которая определена как nvarchar(5), вы можете поместить строку символов в Юникод длиной 5 символов. В столбце или переменной, которая определена как nvarchar(20), вы можете поместить строку длиной в 20 символов для юникода.
Это очень простой материал в sql, я предлагаю прочитать хороший учебник по sql и прийти сюда с вопросами, которые немного более продвинуты.

+0

Есть ли у вас рекомендации по хорошей книге sql? а также, когда я указываю nvarchar (5), я все еще могу вставить длину строки, которая больше 5, это должно произойти? Большое спасибо за Вашу помощь! – Thor

+1

Не для книги, но вы можете начать с учебника по w3schools sql и перейти к более продвинутым материалам позже. Если вы попытаетесь вставить строку длиной 20 символов в колонку 'nvarchar (5)', то sql-сервер поднимет ошибку, говорящую, что строка или двоичные данные будут усечены ». –

+0

Большое вам спасибо за совет! – Thor