Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΡΡΡΠΎΠΊΡ ΠΊ Π²Π΅ΡΡ Π½Π΅ΠΌΡ ΡΠ΅Π³ΠΈΡΡΡΡ. ΠΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ Π·Π°Π΄Π°Π»ΠΈ ΠΎΠΏΡΠΈΡ COLLATE Π΄Π»Ρ Π²Π°ΡΠΈΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ ΠΏΠΎΠ»Π΅ΠΉ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ°Π±ΠΎΡΠ° ΡΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ. Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΠΌΡ ΠΈΡΡ ΠΎΠ΄ΠΈΠΌ ΠΈΠ· ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΠΎ Π²Ρ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ DLL ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Delphi.
library TestUDF;
uses SysUtils;
function malloc(Size: Integer): Pointer; cdecl; external
'msvcrt.dll';
function StrUpperCase(sz: PChar): PChar; cdecl; export;
var Tmp: string;
begin
Tmp := AnsiUpperCase(sz);
Result := malloc(length(Tmp) + 1);
StrPCopy(Result, Tmp);
end;
exports
StrUpperCase;
begin
end.
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ ΡΡΠ½ΠΊΡΠΈΡ: StrUpperCase. ΠΠ»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΡΠ°Π²Π½ΠΎ ΠΊΠ°ΠΊ ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΈΠΏ Pchar, Ρ Π΅. Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΡΠΎΠΊΠ°, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½Π°Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ #0. Π‘ΠΌΡΡΠ» ΠΊΠΎΠ΄Π° Π½Π°ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠ΅Π²ΠΈΠ΄Π΅Π½: ΠΌΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠΌ ΡΡΡΠΎΠΊΡ sz Ρ Π²Π΅ΡΡ Π½Π΅ΠΌΡ ΡΠ΅Π³ΠΈΡΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ AnsiUpperCase. ΠΠ°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΡΡΡΠΊΠΈΠΌΠΈ Π±ΡΠΊΠ²Π°ΠΌΠΈ, Π΅ΡΠ»ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ΡΡΡΡΠΊΠ°Ρ ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠ°. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ malloc - ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Windows. ΠΡΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Tmp Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Result. Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» TestUDF.dll Π² Π½ΡΠΆΠ½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³. ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ InterBase 6.x ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΊΠ»ΠΎΠ½Ρ, ΡΠΎ ΡΡΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ \Udf, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . ΠΠ»Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ DECLARE EXTERNAL FUNCTION, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
DECLARE EXTERNAL FUNCTION name [datatype | CSTRING (int)
[, datatype | CSTRING (int) ...] ]
RETURNS (datatype [BY VALUE] | CSTRING (int)} [FREE_IT]
ENTRY_POINT 'entryname'
MODULE_NAME ' modulename';
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ name - ΡΡΠΎ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π²Π½ΡΡΡΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΠ½ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΡΠ΅Π°Π»ΡΠ½ΡΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ Π² DLL.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ datatype ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΠΏ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ:
* Π²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅;
* Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ) ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ;
* ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ.
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΏ CSTRING Π ΡΠΊΠΎΠ±ΠΊΠ°Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π΄Π»ΠΈΠ½Ρ ΡΡΡΠΎΠΊΠΈ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠ½Π° Π²ΡΠ΅Π³Π΄Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅, Π° Π½Π΅ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ FREE_IT ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ InterBase, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ, Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, Π΄Π°Π½Π½Π°Ρ ΠΎΠΏΡΠΈΡ Π½ΡΠΆΠ½Π° ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ°ΠΌΠ° ΠΌΠΌ Π΄Π΅Π»ΠΈΠ»Π° ΠΏΠ°ΠΌΡΡΡ ΠΏΠΎΠ΄ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ entryname Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² DLL, ΠΊΠΎ ΡΠΎΡΡΡ ΠΌΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈ Ρ ΠΎΡΠΈΠΌ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΡ.
Π ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ modulename Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° DLL, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
Π‘ΡΠΎΠΈΡ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ entryname ΠΈ modulename ΡΠ΅Π³ΠΈΡΡΡΠΎΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
DECLARE EXTERNAL FUNCTION USTRUPPERCASE
cstring(254)
RETURNS cstnng(254) FREE_IT
ENTRY_POINT 'StrUpperCase' MODULE_NAME 'TestUDF.dll'
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ USTRUPPERCASE Π² Π»ΡΠ±ΠΎΠΌ SQL-Π·Π°ΠΏΡΠΎΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π·Π°ΠΏΡΠΎΡΠ΅:
SELECT USTRUPPERCASE(DEPARTMENT) FROM DEPARTMENT
ΠΠ°ΠΏΡΠΎΡ Π²Π΅ΡΠ½Π΅Ρ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»ΠΎΠ² ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ DEPARTMENT:
Π ΠΈΡ 1.5. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ UDF USTRUPPERCASE
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΈΡΡΡΡ Π½Π°Π±ΠΎΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ SQL-ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° User Defined Functions. ΠΠΌΠ΅Ρ ΡΡΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ, Π½ΠΎ ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠ½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠ°Π²ΠΈΠ» Π² Π²Π°ΡΠΈΡ Π±Π°Π·Π°Ρ Π΄Π°Π½Π½ΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎ. Π ΡΡΡΠ½ΠΎΡΡΠΈ, ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ InterBase ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ - ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ NULL-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. Π ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ "ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ" SQL Π·Π°Π²ΠΈΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ Π²Π°ΡΠΈΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ.
Π¨ΠΈΡΠΎΠΊΠΈΠΉ Π²ΡΠ±ΠΎΡ UDF-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π° ΡΠ°ΠΊΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π° ΡΠ°ΠΉΡΠ°Ρ www.InterBaseworld.com ΠΈ www.ibase.ru.
Π ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ InterBase
Borland InterBase 6.x ΠΈ Π΅Π³ΠΎ ΠΊΠ»ΠΎΠ½Ρ Firebird ΠΈ Yaffil - ΠΏΡΠΎΠ΄ΡΠΊΡΡ, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° ΠΌΠ΅ΠΆΠ΄ΡΠ½Π°ΡΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ², Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ ΡΡΡΡΠΊΠΈΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ InterBase Π±ΡΠ΄Π΅Ρ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° ΡΠ°Π±ΠΎΡΡ Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΌ ΡΠ·ΡΠΊΠΎΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ ΠΈ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ Π΅Π΅ Π² ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΠ΄ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΠΎ "ΡΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ" Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ .
Π ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ InterBase
ΠΠ°Π±ΠΎΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
Π§ΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ InterBase, ΠΊΠ°ΠΊ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Ρ ΡΠ°Π½ΠΈΡΡ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌΡΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π½Π°Π±ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (.character set), ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² Π½ΡΠΆΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ (ΡΠΌ. Π²ΡΡΠ΅ Π³Π»Π°Π²Ρ "Π’ΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ " Π΄Π»Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ). Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π°Π±ΠΎΡΠΎΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π°ΡΡΠΈΠ±ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ , Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΠ°Π·Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
ΠΡΠ»ΠΈ Π²Ρ ΡΠ²Π΅ΡΠ΅Π½Ρ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π²Π°ΡΠ΅ΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ , ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π΄ΠΈΠ½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π²ΡΠ΅ΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ Π½Π°Π±ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΡΠΈΠΈ DEFAULT CHARACTER SET. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΡΡΡΠΊΠΈΠΌΠΈ Π±ΡΠΊΠ²Π°ΠΌΠΈ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π°Π±ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² WIN1251. ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°Π±ΠΎΡ UNICODE_FSS, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π»ΡΠ±ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ UNICODE Π² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ UTF-8. ΠΠ΄Π½Π°ΠΊΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΄ΠΎΡΡΡΠΏΠ° Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΠΎΡ Π½Π°Π±ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠΉ WIN1251.
Π§ΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ Π½Π°Π±ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , Π½Π°Π΄ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΡΡΠΎΠΉ:
CREATE DATABASE 'C:\Database\rusbase.gdb' USER 'SYSDBA' PASWORD
'masterkey' DEFAULT CHARACTER SET WIN1251;
Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π°Π±ΠΎΡΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΠΏΠΎΠ»Ρ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΎΡ ΠΆΠ΅ ΡΠ°ΠΌΡΠΉ ΡΠΈΠΏ. ΠΠ½ΠΈ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ Π½Π°Π±ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π΅ΡΠ»ΠΈ ΡΠ²Π½ΠΎ Π½Π΅ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ Π΄ΡΡΠ³ΠΎΠΉ. ΠΡ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½Π°Π±ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ 3 ΠΏΠΎΠ»Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π½Π°Π±ΠΎΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²:
CREATE TABLE langTable(
NAME_RUS VARCHAR(255) CHARACTER SET WIN1251,
NAME_ENG VARCHAR(255) CHARACTER SET WIN1250,
NAME_UNI VARCHAR(255) CHARACTER SET UNICODE_FSS);
ΠΠ΄Π½Π°ΠΊΠΎ, ΡΠΎΠ·Π΄Π°Π² ΡΠ°ΠΊΡΡ ΡΠ°Π±Π»ΠΈΡΡ, Π½Π΅ Π΄ΡΠΌΠ°ΠΉΡΠ΅, ΡΡΠΎ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ SQL-Π·Π°ΠΏΡΠΎΡΠ° Π·Π°Π½ΠΎΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π½Π° ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ Π² ΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ,
ΡΡΠΎ ΠΏΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π°Π±ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (ΡΠΌ. Π½ΠΈΠΆΠ΅), ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΠΎΡΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠ· ΡΠ°Π·Π½ΡΡ Π½Π°Π±ΠΎΡΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΠΈΠΆΠ΄Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΡΠ°Π·Π½ΡΡ Π½Π°Π±ΠΎΡΠΎΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°Π±ΠΎΡ UNICODE_FSS, Π΅ΡΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ.
Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π°Π±ΠΎΡΠΎΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
Π‘ΡΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π½Π°Π±ΠΎΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ SQL-Π·Π°ΠΏΡΠΎΡΠ° ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΡΠ΅Ρ Π½Π°Π±ΠΎΡΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΡΠΎ InterBase ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΊ ΡΡΠΎΠΌΡ Π½Π°Π±ΠΎΡΡ, Π° ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Ρ Π½Π΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡ - ΠΈ ΡΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° "Cannot transliterate characters between character sets".
ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½, Π½Π΅Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Ρ ΡΠ°Π½ΠΈΡΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠ· ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π½Π°Π±ΠΎΡΠΎΠ². ΠΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π°Π±ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΠΎΠ³Π΄Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ character set NONE, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΄Π°Π΅Ρ ΠΏΠΎΠ½ΡΡΡ InterBase, ΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Ρ ΡΠ°Π½ΠΈΡΡΡΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π΅ΡΡΡ, Π±Π΅Π· Π²ΡΡΠΊΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΉ. ΠΡΠΈ ΡΡΠΎΠΌ Π²ΡΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ Π±Π΅ΡΠ΅Ρ Π½Π° ΡΠ΅Π±Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΡΠΊΠ°Π·Π°Π²ΡΠΈΡΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π°Π±ΠΎΡΠΎΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΈΡΠ°ΡΡ ΠΈ Ρ ΡΠ°Π½ΠΈΡΡ Π»ΡΠ±ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
ΠΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ, Π½Π°Π΄ΠΎ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ CHARACTER SET NONE ΠΈ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΎΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡ ΠΎΡ Π½Π°Π±ΠΎΡΠΎΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΌΡ ΠΎΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΠΈ ΠΎΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΡΠ²ΠΎΠΉΡΡΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π΅ΡΡΡ. ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ CHARACTER SET, Π°, ΡΠΎΡΠ½Π΅Π΅, ΠΈΡ COLLATION ORDERS (ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½ΠΈΡ) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΡΠΊΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΈΡ ΠΊ Π²Π΅ΡΡ Π½Π΅ΠΌΡ ΡΠ΅Π³ΠΈΡΡΡΡ.
ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΡΡΠΊΠΈΠ΅ Π±ΡΠΊΠ²Ρ ΡΠΎΡΡΠΈΡΡΡΡΡΡ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Ρ. Π΅. Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄ΠΎΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΡΠΈ ΡΡΠΎΠΌ ΡΡΡΠΎΡΠ½ΡΠ΅ Π±ΡΠΊΠ²Ρ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΠΏΠΈΡΠ½ΡΡ , Π° Π±ΡΠΊΠ²Π° "Π«" Π²ΠΎΠΎΠ±ΡΠ΅ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ. Π§ΡΠΎΠ±Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΠΈΡ ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, Π½Π°Π΄ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΏΠΎΡΠΎΠ± ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½ΠΈΡ, Ρ. Π΅. COLLATION ORDER.