我们说我有一个样本表:
characterid Primay Key
charactername
charatertype
picture1
picture2
另外,我们假设此表中有数千行。
我想选择所有:where characterid like 'a%'
行,然后在更改其“#id”字符时创建所选内容的重复行。由于characterid是主键,因此我无法复制。
新插入的行将具有类似的字符,除了第一个字母' a'这将改为' b'。
到目前为止,我走了多远:
INSERT INTO sample
SELECT * FROM sample WHERE characterid LIKE 'a%';
答案 0 :(得分:2)
使用concat和substr函数替换字符id中的第一个字符:
INSERT INTO sample (characterid, charactername, charatertype, picture1, picture2)
SELECT concat('b',SUBSTR (characterid, 2, len(characterid()) , charactername, charatertype, picture1, picture2
FROM sample WHERE characterid like 'a%';
答案 1 :(得分:1)
我认为最简单的方式表达为:
INSERT INTO sample (characterid, charactername, charatertype, picture1, picture2)
SELECT 'b' || SUBSTR(characterid, 2), . . .
FROM sample WHERE characterid like 'a%';
Postgres不需要substr()
的第三个参数。