请有人能为我解决这个问题吗?不知道怎么问= /
我有两个主要栏目:
竞赛(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
答案 0 :(得分:1)
你应该听@teresko's advice关于正确建模你的数据(除了英文位),否则答案就是
update TABLENAME set RESULTCHECK = 1 where RESULT like "%2,3%"
答案 1 :(得分:1)
这是因为您的数据库结构错误。
有这个东西叫做many-to-many relation和junction 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()测试