检查SQL中的字段是否包含特定的字母数字格式

时间:2014-08-01 13:44:50

标签: sql sql-server tsql

我需要测试SQL表中的特定列,以查找特定字母数字格式之外的任何差异。在此字段中,正确的格式应为一个字母字符,后跟六个数字,如G123456。第一个字母可以是字母表中的任何字母(大写或小写),数字可以是任何六位数的序列。但模式总是一个alpha后跟六位数。

我做了一些搜索,但未能提出解决方案。欢迎任何建议!

我正在运行SQL Server 2008 R2。

谢谢!

2 个答案:

答案 0 :(得分:2)

如果要检查现有数据是否存在超出预期格式的差异,可以这样查询:

SELECT * FROM [dbo].[TableName] 
WHERE [FieldName] NOT LIKE '[A-Z][0-9][0-9][0-9][0-9][0-9][0-9]'

如果您想首先防止无效数据进入表格,您可以添加检查约束:

ALTER TABLE [dbo].[TableName] ADD  CONSTRAINT [CK_TableName_FieldName] 
CHECK  (FieldName like '[A-Z][0-9][0-9][0-9][0-9][0-9][0-9]' )
GO

答案 1 :(得分:0)

此SQL查询将为您提供SampleTable中的所有字母数字名称:

select XYZ_ColumnName from DBName.Schema.SampleTable
where Name like '%[^a-z][^A-Z][^0-9]%'