Luk*_*der 10 sql binary blob inline jdbc
假设我想避免在JDBC中使用绑定变量并使用"ad-hoc"语句运行SQL,例如:
connection.createStatement().executeQuery("SELECT ...");
Run Code Online (Sandbox Code Playgroud)
是否有任何约定/ JDBC转义语法来内联BLOB数据类型?我知道H2有这样的语法:
INSERT INTO lob_table VALUES (X'01FF');
Run Code Online (Sandbox Code Playgroud)
但那不是标准.任何一般解决方案 请注意,我对一般方法感兴趣.我知道这可能会变得非常低效.
Luk*_*der 24
可能没有JDBC转义语法,所以我搜索了一下,发现并成功测试了以下内容:
SQL Server,Sybase ASE,Sybase SQL Anywhere
INSERT INTO lob_table VALUES (0x01FF);
Run Code Online (Sandbox Code Playgroud)DB2
-- Use a blob constructor. This is not needed for VARCHAR FOR BIT DATA types
INSERT INTO lob_table VALUES (blob(X'01FF'));
Run Code Online (Sandbox Code Playgroud)Derby,H2,HSQLDB,Ingres,MySQL,SQLite
INSERT INTO lob_table VALUES (X'01FF');
Run Code Online (Sandbox Code Playgroud)神谕
-- As mentioned by a_horse_with_no_name, keep in mind the relatively low
-- limitation of Oracle's VARCHAR types to hold only 4000 bytes!
INSERT INTO lob_table VALUES (hextoraw('01FF'));
Run Code Online (Sandbox Code Playgroud)Postgres的
-- There is also hex encoding as of Postgres 9.0
-- The explicit cast is important, though
INSERT INTO lob_table VALUES (E'\\001\\377'::bytea);
Run Code Online (Sandbox Code Playgroud)
有关Postgres十六进制编码的更多详细信息,请参阅AH的答案
SQL标准
-- SQL actually defines binary literals as such
-- (as implemented by DB2, Derby, H2, HSQLDB, Ingres, MySQL, SQLite):
<binary string literal> ::=
X <quote> [ <space>... ]
[ { <hexit> [ <space>... ] <hexit> [ <space>... ] }... ] <quote>
<hexit> ::=
<digit> | A | B | C | D | E | F | a | b | c | d | e | f
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
10191 次 |
| 最近记录: |