我做了一个简单的SELECT语句,像这样:
select t.no_qult, t.desc_qult
from qualities_type t
where t.name_qult = 'Lỗi vải'
字段name_qult
是UNICODE_FSS字符集。问题是它不适用于Unicode输入值Lỗi vải
(越南语),仅当我使用纯文本Lá»—i vải
时才有效。
有人知道如何使用unicode输入值进行查询吗?
答案 0 :(得分:-1)
请勿使用文字。不要将数据放入查询文本中,而应将其作为“参数”放在查询之外。
它具有许多好处,例如更可靠的解析,更多的类型检查,更高的安全性以及通常更快的速度(您可以准备一次查询,然后仅更改参数值就运行多次)。
如何对SQL查询中的参数进行编码取决于您在编程语言中用于连接到Firebird的库。有关示例,请参见http://bobby-tables.com/。以下是尝试使用的三种常用约定:
SELECT .... WHERE t.name_qult = ?
-Firebird原生支持基于索引的参数访问SELECT .... WHERE t.name_qult = :NAME_PARAM
-BDE / Delphi风格SELECT .... WHERE t.name_qult = @NAME_PARAM
-MS SQL / .Net样式我不知道您使用的语言和程序支持哪种口味。 IB专家使用Delphi库,因此使用#2选项。 使用#1选项的Java编写程序。
另外,在连接选项中,检查“连接字符集”是否设置为UTF-8或使用越南语代码页可以传输所有这些特定字符。
UNICODE_FSS字符集已过时。如果可能的话,最好尽可能地改用UTF-8字符集。