Java 使用char的SQLite检查约束
我目前正在使用SQLite Studio,在对char类型的列添加检查约束时遇到问题。该列是长度为5的字符的唯一代码列表。我希望check约束不包括代码中的任何位置的字母S、I和Z。这是我到目前为止写的代码 检查(长度(VIN)=5)和子字符(VIN,1,5)不在('S','I','Z')中 上面的代码不起任何作用,字母仍然可以包含在代码中,所以我决定做相反的事情,尽管要长一点 (长度(VIN)=5)和子字符(VIN,1,5)在('A','B','C','D','E','F','G','H','J','K','L','M','N','O','p','Q','R','T','U','V','W','X','Y') 在上面的代码中,检查约束起作用,但约束“不允许”插入5长度的代码。在这个问题上有任何帮助都会很好。提前感谢Java 使用char的SQLite检查约束,java,sqlite,char,check-constraints,Java,Sqlite,Char,Check Constraints,我目前正在使用SQLite Studio,在对char类型的列添加检查约束时遇到问题。该列是长度为5的字符的唯一代码列表。我希望check约束不包括代码中的任何位置的字母S、I和Z。这是我到目前为止写的代码 检查(长度(VIN)=5)和子字符(VIN,1,5)不在('S','I','Z')中 上面的代码不起任何作用,字母仍然可以包含在代码中,所以我决定做相反的事情,尽管要长一点 (长度(VIN)=5)和子字符(VIN,1,5)在('A','B','C','D','E','F','G','H','
substr(VIN,1,5)NOT in('S','I','Z')
将始终为真,因为您正在检查一个5字符长的字符串是否不等于一个字符长的字符串,情况总是如此。您需要匹配:
sqlite>创建表格示例(vin文本检查(长度(vin)=5,且vin不是GLOB'*[sSiIzZ]*');
sqlite>插入示例(vin)值('aaaaaa');--太久
错误:检查约束失败:示例
sqlite>插入示例(vin)值('aaaaa');--恰到好处
sqlite>插入示例(vin)值('aaaza');--禁字
错误:检查约束失败:示例