如何使用和声明在已确定的列中插入值?

时间:2011-04-29 17:11:22

标签: sql firebird

请有人能为我解决这个问题吗?不知道怎么问= /

我有两个主要栏目:

竞赛(PK)和结果 和其他名为RESULTCHECK的列

我需要在RESULTCHECK列中插入值“1”,其中RESULT有一些语句,如。

例如

CONTEST   RESULT
1          1,2,3,4,5
2          2,3,4,5,6

我想要类似的东西 INSERT INTO RESULTCHECK VALUES 1结果类似'%2,3%'

我该怎么做?

最后我得到了当前的结果:

CONTEST    RESULT      RESULTCHECK
1          1,2,3,4,5   1
2          2,3,4,5,6   1
3          5,6,7,8,9   NULL

3 个答案:

答案 0 :(得分:1)

你应该听@teresko's advice关于正确建模你的数据(除了英文位),否则答案就是

update TABLENAME set RESULTCHECK = 1 where RESULT like "%2,3%"

答案 1 :(得分:1)

这是因为您的数据库结构错误

有这个东西叫做many-to-many relationjunction tables

基本上,你需要的是一个

CREATE TABLE ContestResults(
   contest_id INT NOT NULL,
   result_id INT NOT NULL,
   PRIMARY KEY ( contest_id , result_id ),
   FOREIGN KEY ( contest_id ) REFERENCES Contests( contest_is ) ,
   FOREIGN KEY ( result_id ) REFERENCES Results( result_is )
)

您可以保存许多竞赛与许多可能结果之间关系的数据。

P.S。并且,请使用英文名称代码中的内容。

答案 2 :(得分:0)

如果您使用Firebird 2.5,我认为您也可以使用SIMILAR TO进行正则表达式

  

新的SIMILAR TO谓词是   介绍支持定期   表达式。谓词的功能   是验证是否给定   SQL标准正则表达式   匹配字符串参数。这是有效的   在任何接受布尔值的上下文中   表达式,例如WHERE子句,   检查约束和PSQL IF()测试