Столбец ИДЕНТИФИКАЦИОННЫХ ДАННЫХ SQLServer с текстом

Как я создал бы столбец IDENTITY в SQLServer с текстом в столбце?

Пример:


ABCD-987065
ABCD-987066
ABCD-987067

6
задан 1 February 2010 в 15:13
поделиться

7 ответов

В дополнение к другим ответам, вы можете создать вычисленный столбец в таблице, чтобы предоставить то, что вы просите.

CREATE TABLE dbo.MyTable
(
    Id int NOT NULL PRIMARY KEY,
    CombinedId AS 'ABCD-' + CAST(Id as varchar(16)) 
)

Или:

CREATE TABLE dbo.MyTable
(
    Id int NOT NULL PRIMARY KEY,
    PrefixField varchar(16),
    CombinedId AS PrefixField + CAST(Id as varchar(16)) 
)

(В вашем вопросе не сказано, будет ли префикс исправлен или нет...)

.
16
ответ дан 8 December 2019 в 12:20
поделиться

Тебе не придется не использовать столбцу идентификатора, но сгенерировал идентификаторы / строки самостоятельно.

Намного лучше форматировать столбец идентификатора для отображения вместо этого, особенно если строковая часть постояна для всех записей - делает индексацию / запрос большего количества производительности и экономит на пространстве БД.

Если записи могут иметь разное раздел строки (то есть не все, начиная с «ABCD-»), то вы можете хранить это как отдельное поле.

1
ответ дан 8 December 2019 в 12:20
поделиться

Это может стать для вас разумной отправной точкой. Поддержки Atom еще нет, но вы могли бы помочь?

-121--2608932-

только: возврат st;

-121--4222975-

No. Фактический тип столбца также должен быть int или bigint.

0
ответ дан 8 December 2019 в 12:20
поделиться
>>> a = [1, 2, 3]
>>> a[0], a[2] = a[2], a[0]
>>> a
[3, 2, 1]
-121--789208-

Естественно, что эти функции должны быть нестатичными. Но если вы сомневаетесь, пожалуйста, обратитесь к GRASP, они описывают подобные вещи.

Согласно GRASP Information Expert эти функции не должны быть статичными.

Несмотря на отсутствие прямой информации о статическом методе, существует

Information Expert приведет нас к возложить ответственность на классы с наибольшая информация, необходимая для выполнить его.

Если вы делаете методы статичными, вы будете перемещать логику дальше от фактических данных и должны будете передавать данные в метод.

Удаление статики приблизит логику к используемым данным.

-121--3311470-

Вы можете увеличить свои последовательности значения с помощью такой функции:

http://www.sqlservercentral.com/scripts/Miscellaneous/31448/

Мне любопытно, однако, почему вы хотите использовать буквенно-числовую клавишу, а не просто числовую.

1
ответ дан 8 December 2019 в 12:20
поделиться

Нет, но вы можете создать свой выберите оператор таким образом, чтобы вернуть нужный код:

Select 'ABCD-' + Cast(IdColumn as varchar) as IdColumn From MyTable Where (....);

Это предполагает, что у вас есть столбца, называемая idcolumn в таблице, и что «идентичность «Собственность была установлена ​​на« правда ». То есть выделите поле в конструкторе таблицы SQL Server Management Studio, и вы увидите окно для свойств внизу.

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

Select PrefixField + '-' + Cast(IdColumn as varchar) as IdColumn From MyTable Where (....);

вы можете, конечно, создать представление для выполнения этого для вас или даже вычисленного поля, а также Отказ Таким образом, возвращаемое значение встроено в запрос, и вам не нужно не забывать вводить все это каждый раз.

0
ответ дан 8 December 2019 в 12:20
поделиться

Нет, извините. Идентификационное "свойство" может быть размещено только на столбцах с целочисленным или десятичным типом данных.

0
ответ дан 8 December 2019 в 12:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: