Можно ли сделать так, чтобы столбец таблицы SQL Server 2005 принимал только буквы и цифры? - PullRequest
0 голосов
/ 27 мая 2010

Когда у нас есть столбец, в котором будет храниться имя пользователя, которое будет принимать только буквы и цифры, мы всегда делаем проверку в этом поле ввода, используя JavaScript или даже проверку сервера из кода ... но я хочу знать, есть ли способ, который может позвольте мне сделать эту проверку на самом столбце таблицы, даже если кто-нибудь попытается ввести данные из любого места, которое он не принимает, и сгенерирует исключение?

Ответы [ 3 ]

4 голосов
/ 27 мая 2010

Возможно, вы могли бы что-то сделать с проверочным ограничением для столбца. T-SQL изначально не имеет функции регулярных выражений, хотя LIKE (как упомянуто AakashM ниже) достаточно умен, чтобы сделать это. Чтобы получить возможность полного регулярного выражения, вы можете использовать CLR интеграция , чтобы обернуть функцию .Net Regex, а затем обернуть регулярное выражение UDF и использовать проверочное ограничение для вызова функции для оценки содержимого столбца.

Вот другая статья об использовании пользовательских функций CLR для сопоставления регулярных выражений в T-SQL.

2 голосов
/ 27 мая 2010

Избит AakashM, когда я писал это, но вот код в любом случае:

CREATE TABLE #Table
(
    Data VARCHAR(50) NOT NULL  CHECK(Data NOT LIKE '%[^a-zA-Z90-9]%')
)

INSERT INTO #Table(Data)
VALUES ('123abc')

GO

INSERT INTO #Table(Data)
VALUES ('123_abc')

GO

SELECT * FROM #Table

DROP TABLE #Table

Обратите внимание, что это двойное отрицательное выражение, поэтому "Не как не (a-z или 0-9)", поэтому символы% будут фиксировать нарушения в любом месте вставленной строки.

2 голосов
/ 27 мая 2010

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

Подробнее о триггерах

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