当前位置: 代码迷 >> Sql Server >> 好手快来呀 刚学数据库 求解决呀!求解决
  详细解决方案

好手快来呀 刚学数据库 求解决呀!求解决

热度:64   发布时间:2016-04-24 10:33:43.0
高手快来呀 刚学数据库 求解决呀!求解决
sql表中的ID列只能是8位数字,前两位是0,3-4位为数字,第五位为下划线,6~8位为字母 check表达式怎么写
该列为 varchar  :*主要是第五位是下划线不行   变成任意字符了

这是我写的:(len([ID])=(8) AND [ID] like '00[0-9][0-9]_[a-z][a-z][a-z]' 

求高手解答   刚开始学习数据库
------解决方案--------------------
SQL SERVER 2005 测试没问题

USE [GT]
GO
/****** 对象:  Table [dbo].[test]    脚本日期: 06/14/2014 11:02:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[a](ID varchar(8)  CHECK (len(ID)=8 AND ID like '00[0-9][0-9]_[a-z][a-z][a-z]'),date DATETIME)


INSERT INTO dbo.A 
SELECT '0012_ayo','2014-06-14'

SELECT  *  FROM  a

/*
  ID                            date
0012_ayo 2014-06-14 00:00:00.000
*/


------解决方案--------------------
val like '00[0-9][0-9]!_[a-z][a-z][a-z]' escape '!'
val like '00[0-9][0-9][_][a-z][a-z][a-z]'
------解决方案--------------------
CREATE TABLE #T(Col VARCHAR(8) CONSTRAINT CHK_#T_Col CHECK (Col LIKE '00[0-9][0-9][_][a-z][a-z][a-z]' ))


长度条件不需要,Like已经限制长度了,或用栏位类型限制char(8)/varchar(8)
  相关解决方案