Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 签入创建表中的通配符作为字符串_Sql_String_Character_Wildcard - Fatal编程技术网

Sql 签入创建表中的通配符作为字符串

Sql 签入创建表中的通配符作为字符串,sql,string,character,wildcard,Sql,String,Character,Wildcard,我创建了一个存储员工记录的info表,SQL查询如下所示 CREATE TABLE info1 ( empid VARCHAR(8) PRIMARY KEY CONSTRAINT empchk CHECK (empid IN ('kh\%' ESCAPE '\''), initials CHAR(6), fname CHAR(25) NOT NULL, lname CHAR(25), userstatus INTEGER NOT NULL, de

我创建了一个存储员工记录的info表,SQL查询如下所示

CREATE TABLE info1 (
   empid VARCHAR(8) PRIMARY KEY CONSTRAINT empchk 
      CHECK (empid IN ('kh\%' ESCAPE '\''),
   initials CHAR(6), fname CHAR(25) NOT NULL, 
   lname CHAR(25), 
   userstatus INTEGER NOT NULL, 
   designation CHAR(10) NOT NULL
);
现在,正如您在
empid
中看到的约束是
kh%
其中-据我所知-
%
意味着以下任意数量的字符(当然限制为
8
)可以是任何字符,对吗

我正在使用Java DB,奇怪的是它将
%
符号也作为字符串的一部分,因此如果我输入
khce0001
,它会说
empchk
违规,它只接受
kh%


我该怎么办?为什么会发生这种情况?

这个SQL查询中的错误是我在中使用了
,而不是像
那样使用
(我相信它会进行通配符检查),所以

  • 我放弃了对…的约束

    ALTER TABLE info DROP CONSTRAINT empchk;
    
  • 用…改变了桌子

    ALTER TABLE info ADD CONSTRAINT empchk CHECK (empid LIKE ('kh%'));
    
  • 因此正确的SQL查询应该是

    CREATE TABLE info1 (
        empid VARCHAR(8) PRIMARY KEY CONSTRAINT empchk 
            CHECK (empid LIKE ('kh%')),
        initials CHAR(6), 
        fname CHAR(25) NOT NULL,
        lname CHAR(25), 
        userstatus INTEGER NOT NULL,
        designation CHAR(20) NOT NULL
    );
    

很好,你能理解。考虑关闭这个问题