Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΏΠΎ Delphi. ВСрсия 1.4.3 ΠΎΡ‚ 1.1.2001Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 40

Автор Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½ ΠžΠ·Π΅Ρ€ΠΎΠ²

Π”Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π΅ΠΌΠΎΠΉ являСтся использованиС SQLPASSTHRU MODE. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π½Π°Ρ‚ΠΈΠ²-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ TTable.Append ΠΈΠ»ΠΈ TTable.Insert Π±ΡƒΠ΄ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с TQuery, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΊ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Ρ€ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… значСния: NOT SHARED, SHARED NOAUTOCOMMIT ΠΈ SHARED AUTOCOMMIT. NOT SHARED ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π°Ρ‚ΠΈΠ²-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ΄Π½ΠΎ соСдинСниС с сСрвСром, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ запросы – Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π‘ΠΎ стороны сСрвСра это видится ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π° Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’ любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΠΊΠ° транзакция Π°ΠΊΡ‚ΠΈΠ²Π½Π°, Π½Π°Ρ‚ΠΈΠ²-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ (committed) Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° транзакция Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°. Если Π±Ρ‹Π» Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ TQuery, Ρ‚ΠΎ Π»ΡŽΠ±Ρ‹Π΅ измСнСния, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, проходят ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

Π”Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π΅ΠΆΠΈΠΌΠ°, SHARED NOAUTOCOMMIT ΠΈ SHARED AUTOCOMMIT, Π΄Π΅Π»Π°ΡŽΡ‚ для Π½Π°Ρ‚ΠΈΠ²-ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ запросов ΠΎΠ±Ρ‰ΠΈΠΌ ΠΎΠ΄Π½ΠΎ соСдинСниС с сСрвСром. Π Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ Π½Π°Ρ‚ΠΈΠ²-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° сСрвСр. ΠŸΡ€ΠΈ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ SHARED AUTOCOMMIT бСссмыслСнно ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΡƒΡŽ Π½Π°Ρ‚ΠΈΠ²-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для удалСния записи ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΎΠΉ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚ (Rollback). Π—Π°ΠΏΠΈΡΡŒ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π°, Π° измСнСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ сдСланы (committed) Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Rollback. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π½Π°Ρ‚ΠΈΠ²-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² саму Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ SQLPASSTHRU MODE установлСн Π² SHARED NOAUTOCOMMIT ΠΈΠ»ΠΈ Π² NOT SHARED.

5. Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Delphi ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСство характСристик ΠΏΡ€ΠΈ использовании языка SQL с вашими сСрвСрами Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…. На этой Π½ΠΎΡ‚Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΏΠΎΠΏΡ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈ ΠΏΠΎΠΆΠ΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΡ‡Π°Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SQL Π² Π²Π°ΡˆΠΈΡ… прилоТСниях. 

SQL: – сортировка вычисляСмого поля

Delphi 1 

Иногда схСма Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π» вычисляСмый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π’ прилоТСниях Delphi Π² случаС использования SQL это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ эта тСхнология Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ разнится Π² зависимости ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ….

Для локального SQL, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Paradox ΠΈ dBASE, вычисляСмому полю Π΄Π°ΡŽΡ‚ имя с использованиСм ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова AS. ΠŸΡ€ΠΈ этом допускаСтся ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»Π΅ для задания порядка сортировки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ„Ρ€Π°Π·Ρ‹ ORDER BY Π² SQL-запросС. НапримСр, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ITEMS.DB:

SELECT I."PARTNO", I."QTY", (I."QTY" * 100) AS TOTAL

FROM "ITEMS.DB" I

ORDER BY TOTAL

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ вычисляСмому полю Π±Ρ‹Π»ΠΎ присвоСно имя TOTAL (Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ссылки), послС Ρ‡Π΅Π³ΠΎ ΠΎΠ½ΠΎ стало доступным Π² SQL-запросС для выраТСния ORDER BY.

Π’Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ поддСрТиваСтся Π² InterBase. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вычисляСмыС поля Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… InterBase (IB) ΠΈΠ»ΠΈ сСрвСрС Local InterBase Server всС ΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ВмСсто использования ΠΈΠΌΠ΅Π½ΠΈ вычисляСмого поля, Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ORDER BY ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ порядковоС число, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ собой ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ вычисляСмого поля Π² спискС ΠΏΠΎΠ»Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. НапримСр, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ EMPLOYEE (Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… EMPLOYEE.GDB):

SELECT EMP_NO, SALARY, (SALARY / 12) AS MONTHLY

FROM EMPLOYEE

ORDER BY 3 DESCENDING

Π’ Ρ‚ΠΎ врСмя, ΠΊΠ°ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ IB ΠΈ LIBS ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ, ΠΎΠ±Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° доступны ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ SQL. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ SQL-запрос для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Paradox, ΠΈ приспосабливая Π΅Π³ΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ вычисляСмого поля, Π° Π½Π΅ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½Π΅ΠΌ:

SELECT I."PARTNO", I."QTY", (I."QTY" * 100) AS TOTAL

FROM "ITEMS.DB" I

ORDER BY 3 

SQL: – суммированиС вычисляСмого поля

Π‘Ρ‹Π²Π°ΡŽΡ‚ случаи, ΠΊΠΎΠ³Π΄Π° Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Delphi, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ для получСния доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ SQL, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ сумму вычислСнных Π΄Π°Π½Π½Ρ‹Ρ…. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SQL ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ вычисляСмоС ΠΏΠΎΠ»Π΅ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ SUM.

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с SQL-Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Local InterBase Server), всС достаточно Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎ, ΠΈ сумма вычисляСтся простым использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SUM с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ поля. НапримСр, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ EMPLOYEE (ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… EMPLOYEE.GDB): 

SELECT SUM(SALARY / 12)

FROM EMPLOYEE

Π’Π° ΠΆΠ΅ самая ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° Π² случаС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ значСния Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ столбцС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ утвСрТдСния GROUP BY:

SELECT EMP_NO, SUM(SALARY / 12)

FROM EMPLOYEE

GROUP BY EMP_NO

ORDER BY EMP_NO

Пока SQL Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ суммированиС вычисляСмых ΠΏΠΎΠ»Π΅ΠΉ, Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ SQL этого Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Для получСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π½ΡƒΠΆΠ½Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запроса с вычисляСмым ΠΏΠΎΠ»Π΅ΠΌ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ (ΠΊΠ°ΠΊ ΠΈ Π² случаС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° TBatchMove), ΠΈ использованиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° TQuery для вычислСния суммы Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅. 

SQL: – использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SUBSTRING

SQL-функция SUBSTRING ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² прилоТСниях Delphi, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… с запросами ΠΊ локальной SQL, Π½ΠΎ ΠΎΠ½Π° Π½Π΅ поддСрТиваСтся ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ InterBase (IB) ΠΈ Local InterBase Server (LIBS). НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ синтаксис Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SUBSTRING, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π΅Π΅ использования Π² запросах ΠΊ local SQL, ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° для возвращСния Ρ‚Π΅Ρ… ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² для Ρ‚Π°Π±Π»ΠΈΡ† IB/LIBS.

Бинтаксис Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SUBSTRING:

SUBSTRING(<column> FROM <start> [, FOR <length>])

Π“Π΄Π΅:

<column> – имя ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° подстрока (substring).

<start> мСсто Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, начиная с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ извлСкаСтся подстрока.

<length> Π΄Π»ΠΈΠ½Π° ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌΠΎΠΉ подстроки.

Ѐункция SUBSTRING Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ, Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ символы ΠΈΠ· ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ с ΠΈΠΌΠ΅Π½Π΅ΠΌ COMPANY:

SUBSTRING(COMPANY FROM 2 FOR 3)

Ѐункция SUBSTRING ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована ΠΈ для списка ΠΏΠΎΠ»Π΅ΠΉ Π² SELECT-запросС, Π³Π΄Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово WHERE допускаСт сравнСниС значСния с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ. Ѐункция SUBSTRING ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ Ρ‚ΠΈΠΏΠ° String (Π½Π° языкС SQL Ρ‚ΠΈΠΏ CHAR). Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SUBSTRING, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ список ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Π² SELECT-запросС (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Paradox CUSTOMER.DB):

SELECT (SUBSTRING(C."COMPANY" FROM 1 FOR 3)) AS SS

FROM "CUSTOMER.DB" C

Π”Π°Π½Π½Ρ‹ΠΉ SQL-запрос ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ‚Ρ€ΠΈ символа ΠΈΠ· ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ COMPANY, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΉ ΠΊΠ°ΠΊ вычисляСмая ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° с ΠΈΠΌΠ΅Π½Π΅ΠΌ SS. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SUBSTRING, использованной Π² SQL-запросС с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом WHERE (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚Ρƒ ΠΆΠ΅ ΡΠ°ΠΌΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ):

SELECT C."COMPANY"

FROM "CUSTOMER.DB" C

WHERE SUBSTRING(C."COMPANY" FROM 2 FOR 2) = "an"

Π”Π°Π½Π½Ρ‹ΠΉ запрос Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ всС строки Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π³Π΄Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ символы Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ COMPANY Ρ€Π°Π²Π½Ρ‹ Β«arΒ».

Π’Π°ΠΊ ΠΊΠ°ΠΊ функция SUBSTRING Π½Π΅ поддСрТиваСтся Π² Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… IB ΠΈ LIBS, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с подстроками со списком ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Π² запросС Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ (ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: IB ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с подстроками Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, опрСдСляСмыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, User-Defined Functions). Но с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° LIKE ΠΈ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ² подстановки Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с подстрокой ΠΈ Π² случаС WHERE. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° основС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ EMPLOYEE (Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… EMPLOYEE.GDB):

SELECT LAST_NAME, FIRST_NAME

FROM EMPLOYEE

WHERE LAST_NAME LIKE "_an%"

Π”Π°Π½Π½Ρ‹ΠΉ SQL-запрос Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ всС строки Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π³Π΄Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ символы Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ LAST_NAME Ρ€Π°Π²Π½Ρ‹ Β«anΒ», см. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° основС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Paradox. Π‘Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… IB ΠΈ LIBS для выполнСния сравнСния подстроки Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ запроса WHERE Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ (ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ SUBSTRING), Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΆΠ΅ Paradox ΠΈ dBASE (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, local SQL) ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π»ΡŽΠ±Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ.

Sybase 

32-Π±ΠΈΡ‚Π½ΠΎΠ΅ соСдинСниС с сСрвСром Sybase

Delphi 2

Π”Π°Π½Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Sybase Ρ‡Π΅Ρ€Π΅Π· 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΎΡ‚ Ρ„ΠΈΡ€ΠΌΡ‹ Borland Sybase SQL Links, поставляСмый Π² составС Delphi 2.x. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Sybase Π·Π°ΠΉΠΌΠ΅Ρ‚ Π½Π° вашСм ТСстком дискС ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ 10+ ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚ свободного пространства.

Π¨Π°Π³ΠΈ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:

1. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ SQL Links установлСн Π½Π° вашСм локальном дискС. ΠŸΡ€ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ установкС Delphi 2.x это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΆΠ΅ установлСно Π² систСмС.

2. Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€ΡƒΠΉΡ‚Π΅ клиСнтскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Sybase.

3. ΠŸΡ€ΠΈ появлявлСнии Π² процСссС установки Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π²Ρ‹Π±ΠΎΡ€Π° 16– ΠΈ 32-разрядной вСрсии Sybase links, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 32-Π±ΠΈΡ‚Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ (ΠΎΡ‚ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅ Π³Π°Π»ΠΎΡ‡ΠΊΠΎΠΉ) ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ опция 16-Π±ΠΈΡ‚Π½ΠΎΠΉ вСрсии Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π°.

4. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ клиСнтскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Π±ΡƒΠ΄Π΅Ρ‚ установлСно Π½Π° вашСм ТСстком дискС, Ρƒ вас попросят Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ†ΠΈΡŽ вашСго Ρ„Π°ΠΉΠ»Π° AUTOEXEC.BAT. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ YES.

5. На запрос ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ рСдактирования вашСго Ρ„Π°ΠΉΠ»Π° SQL.INI ΠΎΡ‚Π²Π΅Ρ‚ΡŒΡ‚Π΅ YES.

6. Π’ сСкции Β«Input Server Name:Β» (Π²Π²Π΅Π΄ΠΈΡ‚Π΅ имя сСрвСра) ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ псСвдоним сСрвСра. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ 'Add' (Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ) для внСсСния ΠΈΠΌΠ΅Π½ΠΈ сСрвСра Π² список Β«Server Entry:Β». Π—Π°Ρ‚Π΅ΠΌ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ поля рСдактирования Β«Service Type:Β» (Ρ‚ΠΈΠΏ сСрвиса) (Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ 'query' (запрос)), Β«Platform:Β» (ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°) (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ устанавливаСтся Π² NT, dos ΠΈΠ»ΠΈ Win3), ΠΈ Β«Net-Library Driver:Β» (Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ сСтСвой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ) (Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ NLWNSCK ΠΈΠ»ΠΈ NLNWLINK) содСрТат Π²Π΅Ρ€Π½Ρ‹Π΅ свСдСния. Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ»Π΅ рСдактирования Β«Connection Information/Network Address:Β» (адрСс ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ/сСтСвого соСдинСния), ввСдя сСтСвой адрСс сСрвСра, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ соСдинСниС. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ 'Add Service' (Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ сСрвис). Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΎΠΏΠΈΠ½Π³ΠΎΠ²Π°Ρ‚ΡŒ ваш сСрвСр, щСлкая ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ 'Ping'. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ настройки ΠΈ Π²Ρ‹ΠΉΠ΄ΠΈΡ‚Π΅ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.