4
是否可以使用Google Cloud Spanner Java SDK綁定到提供給查詢IN部分的參數?如何綁定到雲端Spanner Java API中的IN參數
例如
List<String> names = new ArrayList<String>();
names.add("Alice");
names.add("Bob");
String sql = "SELECT * FROM people WHERE name IN (@names)";
Statement statement = Statement
.newBuilder(sql)
.bind("names").to(names)
.build();
如果我們使用toStringArray綁定名稱,則會出錯。如果我們設置如下:
names = "'Alice','Bob'";
然後生成的SQL是:
SELECT * FROM people WHERE name IN ("'Alice','Bob'")
- 注意額外的報價。任何想法如何我們可以做到這一點沒有%的字符串替換,以避免注入攻擊?
當你說「是錯誤的」,什麼是錯誤?你在做'.bind(「names」)。toStringArray(names)' –
嗨Dan,我收到這個錯誤: INVALID_ARGUMENT:沒有運算符IN的匹配簽名,用於參數類型STRING和{ARRAY} [at 1:35] SELECT name FROM customers WHERE name IN(@names) –
user3707
如果你的SQL語句爲'WHERE name IN UNNEST(@names)' –