我需要测试SQL表中的特定列,以查找特定字母数字格式之外的任何差异。在此字段中,正确的格式应为一个字母字符,后跟六个数字,如G123456。第一个字母可以是字母表中的任何字母(大写或小写),数字可以是任何六位数的序列。但模式总是一个alpha后跟六位数。
我做了一些搜索,但未能提出解决方案。欢迎任何建议!
我正在运行SQL Server 2008 R2。
谢谢!
答案 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]%'