是否可以在某些编程语言中将字符串值评估为 SQL 语句(如 EVAL)中的计算表达式?
>>> 编辑 4:更准确地说:一个包含由算术运算符分隔的数字列表的表达式... <<<
例如: 表 A:
CREATE TABLE A (
id INT NOT NULL PRIMARY KEY,
note INT,
detailNote VARCHAR(20)
);
插入一行:
INSERT INTO A (id, note, detailNote)
VALUES (1,20,"2+4+2+2+2+0+2+0+2");
我希望能够使用“detailNote”列的评估值来更新“note”列,例如:
UPDATE A
SET note = CAST(detailNote AS UNSIGNED);
或者 :
UPDATE A
SET note = 1*(detailNote);
这 2 次试验产生错误:“截断不正确的整数/双精度值......”
非常感谢您的帮助!
>>> 编辑。1 <<< 我知道数据库模型不是正确的;它应该是 :
CREATE TABLE A (
id INT NOT NULL PRIMARY KEY,
note INT
);
CREATE TABLE B (
id INT NOT NULL REFERENCES A(id),
seq INT NOT NULL,
detNote INT,
PRIMARY KEY (id, seq)
);
INSERT INTO A (id, note)
VALUES (1,20);
INSERT INTO B (id, seq, detNote)
VALUES (1,1,2);
INSERT INTO B (id, seq, detNote)
VALUES (1,2,4);
INSERT INTO B (id, seq, detNote)
VALUES (1,3,2);
等等,更新查询可能是:
UPDATE A
SET note = (SELECT SUM(detNote) FROM B WHERE A.id = B.id);
但是,字符串的使用更紧凑,内容确定。
>>> 编辑。2 <<< 第一个解决方案(不好的一个,但存在......):(因为我确定整数(0-9)位置:
SELECT (SUBSTR(detailNote,1,1) +SUBSTR(detailNote,3,1)
+ SUBSTR(detailNote,5,1) +SUBSTR(detailNote,7,1)
+ SUBSTR(detailNote,9,1) +SUBSTR(detailNote,11,1)
+ SUBSTR(detailNote,13,1) +SUBSTR(detailNote,15,1)
+ SUBSTR(detailNote,17,1) +SUBSTR(detailNote,19,1))
FROM A;
>>> 编辑。3 <<< 可以告诉我在 A 中添加 10 个 INT 字段...但一个字符串更易于操作...