如何在Firebird 2.1中使用Unicode输入值查询?

时间:2019-01-17 03:24:56

标签: firebird

我做了一个简单的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时才有效。 firebird screen

有人知道如何使用unicode输入值进行查询吗?

1 个答案:

答案 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字符集。