1 背景
Phoenix SQL的一些语法与mysql等数据库的语法有所不同,以下是我在使用过程中遇到的一些问题。
2 问题
- 库名、表名、字段名都需要加双引号,否则会被自动转换为大写,造成不可预知的错误。
- 插入使用
upsert
命令,而不是insert
UPSERT INTO TEST VALUES('foo','bar',3);
UPSERT INTO TEST(NAME,ID) VALUES('foo',123);
UPSERT INTO TEST(ID, COUNTER) VALUES(123, 0) ON DUPLICATE KEY UPDATE COUNTER = COUNTER + 1;
UPSERT INTO TEST(ID, MY_COL) VALUES(123, 0) ON DUPLICATE KEY IGNORE;
- 没有
update
命令,可以采用覆盖更新。
主键相同的数据,新插入的数据会自动覆盖原来的数据
UPSERT INTO test.targetTable(col1, col2) SELECT col3, col4 FROM test.sourceTable WHERE col5 < 100
UPSERT INTO foo SELECT * FROM bar;
- 字符串转数字函数
TO_NUMBER
- 字符串拆分函数
regexp_split("col",'\.')
网友评论