我创建了一个名为test
with column 的表code
:
create table test(
code char(3) not null);
Run Code Online (Sandbox Code Playgroud)
然后我用以下数据填充表格:
insert into test values ('A12');
insert into test values ('B23');
insert into test values ('C45');
Run Code Online (Sandbox Code Playgroud)
然后我改变了列以使其成为char(4):
alter table test
alter column code char(4) not null;
Run Code Online (Sandbox Code Playgroud)
然后我为所有现有数据添加了一个"X",使其变为4个字符长:
update test
set code='X'+code
where LEN(code)=3;
Run Code Online (Sandbox Code Playgroud)
到目前为止这么好但是当我尝试添加检查约束时:
alter table test
add constraint codeCheck check (code like 'A-Z''A-Z''0-9''0-9');
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
The ALTER TABLE statement conflicted with the CHECK constraint "codeCheck".
我理解错误意味着现有数据违反了我试图添加到表中的检查约束,但为什么呢?
我该怎么做才能使现有数据和检查约束不相互冲突?
Mentor table
------------
name (varchar)
contact (int)
english (boolean)
french (boolean)
german (boolean)
Student table
-------------
name (varchar)
contact (int)
english (boolean)
french (boolean)
german (boolean)
Run Code Online (Sandbox Code Playgroud)
我想根据语言将导师与学生匹配,例如:
如果导师1知道英语和法语,他将与所有至少懂英语或法语的学生匹配.
mentor1 (english, french)
-------------------------
studentA (english);
studentB (english, french);
studentC (english, german);
studentD (english, french, german)
Run Code Online (Sandbox Code Playgroud)
如果导师2只知道德语,他将与所有至少知道德语的学生匹配.匹配的学生不仅仅知道德语.
mentor2 (german)
----------------
studentC (english, german)
studentD (english, french, german)
Run Code Online (Sandbox Code Playgroud)
通常我会使用一堆if then else
拼凑一个sql字符串,但我gridview
用来显示数据,所以我不知道我能做什么.
样本代码和教程总是受欢迎的.
编辑:忘了提这个mentor
表也会有像name
和的列contact
.所以输出gridview
应该是每行1行mentor
.
---------------------
| ID | date |
|-----+-------------|
| 1 | 2013-12-30 |
| 2 | 2014-01-03 |
| 3 | 2014-02-02 |
---------------------
Run Code Online (Sandbox Code Playgroud)
列ID
是int
类型
列date
是Date
类型
当我使用时SELECT CAST (getdate() as date) currentDay, ID FROM table WHERE date >= GETDATE()
,它只返回:
--------------------------------------
| currentDay | ID | date |
|---------------+------+-------------|
| 2013-12-30 | 2 | 2014-01-03 |
| 2013-12-30 | 3 | 2014-02-02 |
--------------------------------------
Run Code Online (Sandbox Code Playgroud)
它没有返回行ID=1
.
换句话说,>=GETDATE()
不返回具有今天日期的行.
我做错了什么?