String-Funktionen: Bearbeiten |
 |
F_LEFT
(F_LEFT4, F_LEFT8)
F_BIGLEFT |
kompatibel
zu FreeUDFLib,
FreeUDFLibC, FreeUDFLib AvERP, GrUDF |
|
 |
ersetzbar
durch LEFT |
Entrypoint |
left |
|
Input |
CSTRING(254)
INTEGER |
String
der beschnitten werden soll
Länge des auszugebenden Strings |
Output |
CSTRING(254) |
String
beschnitten auf die Anzahl Zeichen von links von Parameter 2 |
Zählung
beginnt bei 1.
TestSQL
SELECT 'Dies i' AS ISCORRECT, F_LEFT('Dies ist ein Test', 6) FROM
RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_LEFT(NULL, NULL) FROM RDB$DATABASE; |
  |
F_MID
(F_MID4, F_MID8)
F_BIGMID |
kompatibel
zu
FreeUDFLib,
FreeUDFLibC, FreeUDFLib AvERP
Input/Output-kompatibel
zu IB_UDF ( |
|
 |
ersetzbar
durch SUBSTRING |
Entrypoint |
mid |
|
F_COPY
F_STRCOPY |
kompatibel
zu GrUDF
Input/Output-kompatibel
zu rFunc (SUBSTR, LONGSUBSTR) |
Entrypoint |
mid1 |
|
Input |
CSTRING(254)
INTEGER
INTEGER |
String
der beschnitten werden soll
Position, an der der auszugebende String beginnt
Länge des auszugebenden Strings |
Output |
CSTRING(254) |
String
beginnende bei Position aus Parameter 2 in der Länge von Parameter 3 |
Zählung
beginnt bei F_MID für Parameter 2 bei
0, bei F_COPY uind F_STRCOPY für Parameter 2 bei 1!
TestSQL
SELECT 'tag' AS ISCORRECT, F_MID('Geburtstagsparty', 7, 3)
FROM RDB$DATABASE;
SELECT 'tag' AS ISCORRECT, F_COPY('Geburtstagsparty', 8, 3)
FROM RDB$DATABASE;
SELECT 'tag' AS ISCORRECT, F_STRCOPY('Geburtstagsparty', 7,
3) FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_MID(NULL, NULL, NULL) FROM RDB$DATABASE; |
  |
F_RIGHT
(F_RIGHT4, F_RIGHT8)
F_BIGRIGHT |
kompatibel
zu FreeUDFLib,
FreeUDFLibC, FreeUDFLib AvERP, GrUDF |
|
 |
ersetzbar
durch RIGHT |
Entrypoint |
right |
|
Input |
CSTRING(254)
INTEGER |
String
der beschnitten werden soll
Länge des auszugebenden Strings |
Output |
CSTRING(254) |
String
beschnitten auf die Anzahl Zeichen von rechts von Parameter 2 |
Zählung
beginnt bei 1
TestSQL
SELECT 'n Test' AS ISCORRECT, F_RIGHT('Dies ist ein Test', 6) FROM
RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_RIGHT(NULL, NULL) FROM RDB$DATABASE; |
  |
F_SUBSTR
(F_SUBSTR4, F_SUBSTR8)
F_BIGSUBSTR
|
kompatibel
zu FreeUDFLibC
kompatibel
zu FreeUDFLibC
|
Entrypoint |
substr |
|
Input |
CSTRING(8190)
CSTRING(1024) |
String
1 in dem
die Position von Parameter 2 ermittelt werden soll
String 2 dessen Position in Parameter 1 ermittelt werden soll |
Output |
INTEGER |
erste Position
im String 1 aus, bei der der String 2 beginnt. |
F_SUBSTR
(F_STRSUB)
|
kompatibel
zu FreeUDFLib,
FreeUDFLib AvERP, GrUDF
|
Entrypoint |
strsub |
|
F_STRPOS |
Input/Output-kompatibel
zu rFunc
(STRPOS) |
|
 |
ersetzbar
durch POSITION |
Entrypoint |
strpos |
|
Input |
CSTRING(1024)
CSTRING(8190) |
String
1 dessen
Position in Parameter 2 ermittelt werden soll
String 2 in dem
die Position von Parameter 1 ermittelt werden soll |
Output |
INTEGER |
erste Position
im String 2 aus, bei der der String 1 beginnt. |
F_SUBSTR,
F_STRSUB etc.: Zählung beginnt bei 0, bei Nichtgefunden -1.
F_STRPOS:
Zählung beginnt bei 1, bei Nichtgefunden 0.
Anmerkung:
In der originalen FreeUDFLib (1998 by Gregory Deatz) ist die
Reihenfolge der Eingabe-Parameter vertauscht gegenüber den anderen
String-Funktionen und vor allem wie in der C-Portierung (1999 by
Gregory Deatz) der FreeUDFLibC.
Um nun Kompatibilität für beide Varianten herzustellen, gibt
es verschiedene “Entrypoints”, die in dem DECLARE-Script von
F_SUBSTR
verwendet werden können:
- Für eine Kompatibilität zur (Delphi-)FreeUDFLib, zur FreeUDFLib AvERP
und zur GrUDF (die wiederum ihrerseits Kompatible zur Delphi-FreeUDFLib
ist) verwendet man den Entrypoint "strsub"
- für eine Kompatibilität zur FreeUDFLibC den Entrypoint "substr".
TestSQL (Version FreeUDFLibC mit Entrypoint substr)
SELECT 9 AS ISCORRECT, F_SUBSTR('Pauline fährt in Urlaub', 'ähr') FROM
RDB$DATABASE;
SELECT -1 AS ISCORRECT, F_SUBSTR('Pauline fährt in Urlaub', 'chr') FROM
RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_SUBSTR(NULL, NULL) FROM RDB$DATABASE;
SELECT
10 AS ISCORRECT, F_STRPOS('ähr', 'Pauline fährt in Urlaub') FROM
RDB$DATABASE;
SELECT 0 AS ISCORRECT, F_STRPOS('chr', 'Pauline
fährt in Urlaub') FROM RDB$DATABASE;
TestSQL (Version FreeUDFLib, GrUDF mit Entrypoint strsub)
SELECT 9 AS ISCORRECT, F_SUBSTR('ähr', 'Pauline fährt in Urlaub') FROM
RDB$DATABASE; |
  |
F_SUBSTRN
(F_SUBSTR) |
Funktion
von adhoc |
Entrypoint |
substrn |
|
Input |
CSTRING(8190)
CSTRING(1024) |
String
1 in dem
die Position von Parameter 2 ermittelt werden soll
String 2 dessen Position in Parameter 1 ermittelt werden soll |
Output |
INTEGER |
erste Position
im String 1 aus, bei der der String 2 beginnt. |
F_STRSUBN
(F_SUBSTR) |
Funktion
von adhoc |
Entrypoint |
strsubn |
|
Input |
CSTRING(1024)
CSTRING(8190) |
String
1 dessen
Position in Parameter 2 ermittelt werden soll
String 2 in dem
die Position von Parameter 1 ermittelt werden soll |
Output |
INTEGER |
erste Position
im String 2 aus, bei der der String 1 beginnt. |
Die
beiden vorigen Varianten (F_SUBSTR und
F_STRSUB) liefern bei Nichtvorkommen des Suchstrings -1.
Um nun auch in diesem Fall korrekt ein <null> zu bekommen
(und
die alte Variante beibehalten zu können), verwendet man den Entrypoint
"strsubnull" bzw. "substrnull".
TestSQL (Version FreeUDFLibC mit Entrypoint substrnull)
SELECT NULL AS ISCORRECT, F_SUBSTR('Pauline fährt in Urlaub', 'chr')
FROM
RDB$DATABASE; |
  |
F_STRRM
|
kompatibel
zu |
Entrypoint |
strrm |
|
Input |
CSTRING(8190)
INTEGER |
String,
aus dem
eine Stelle entfernt werden soll
Stelle im String, die entfernt werden soll |
Output |
CSTRING(8190) |
String aus dem
ein Zeichen entfernt wurde |
Zählung
beginnt für Parameter 2 bei 0
TestSQL
SELECT 'ies ist ein Test' AS ISCORRECT, F_STRRM('Dies ist ein Test', 0)
FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_STRRM(NULL, NULL) FROM RDB$DATABASE; |
  |
F_LTRIM
(F_LTRIM4, F_LTRIM8)
F_BIGLTRIM |
kompatibel
zu FreeUDFLib,
FreeUDFLibC, FreeUDFLib AvERP, GrUDF
Input/Output-kompatibel
zu rFunc (LTRIM, LONGLTRIM) |
Entrypoint |
ltrim |
|
Input |
CSTRING(8190) |
String, dessen
Leerzeichen zu Beginn entfernt werden sollen |
Output |
CSTRING(8190) |
String ohne
alle einfachen Leerzeichen zu Beginn des Strings |
Entfernt
nicht
die geschützten Leerzeichen (mit <ALT>
<255> eingegebene)
TestSQL
SELECT 'Dies ist ein Test' AS ISCORRECT, F_LTRIM('
Dies ist ein Test') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_LTRIM(NULL) FROM RDB$DATABASE; |
  |
F_RTRIM
(F_RTRIM4, F_RTRIM8)
F_BIGRTRIM |
kompatibel
zu FreeUDFLib,
FreeUDFLibC, FreeUDFLib AvERP, GrUDF
Input/Output-kompatibel
zu rFunc
(RTRIM, LONGRTRIM) |
|
 |
ersetzbar
durch TRIM |
Entrypoint |
rtrim |
|
Input |
CSTRING(8190) |
String, dessen
Leerzeichen am Ende entfernt werden sollen |
Output |
CSTRING(8190) |
String ohne
alle einfachen Leerzeichen am Ende des Strings |
Entfernt
nicht
die geschützten Leerzeichen (mit <ALT>
<255> eingegebene)
TestSQL
SELECT 'Dies ist ein Test' AS ISCORRECT, F_STRINGLENGTH(F_RTRIM('Dies
ist ein Test ')) AS ANZ_ZEICHEN, F_RTRIM('Dies ist
ein
Test ') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_STRINGLENGTH(F_RTRIM(NULL)) AS ANZ_ZEICHEN,
F_RTRIM(NULL) FROM RDB$DATABASE; |
  |
F_LRTRIM
(F_LRTRIM4, F_LRTRIM8)
F_BIGLRTRIM |
kompatibel
zu FreeUDFLib,
FreeUDFLibC, FreeUDFLib AvERP, GrUDF
Input/Output-kompatibel zu rFunc
(TRIM, LONGTRIM)
|
Entrypoint |
lrtrim |
|
Input |
CSTRING(8190) |
String, dessen
Leerzeichen zu Beginn und am Ende entfernt werden sollen |
Output |
CSTRING(8190) |
String ohne
alle einfachen Leerzeichen zu Beginn und am Ende des Strings. |
Entfernt
nicht
die geschützten Leerzeichen (mit <ALT>
<255> eingegebene)
TestSQL
SELECT 'Dies ist ein Test' AS ISCORRECT,
F_STRINGLENGTH(F_LRTRIM(' Dies ist ein
Test ')) AS
ANZ_ZEICHEN, F_LRTRIM(' Dies ist ein Test
') FROM
RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_STRINGLENGTH(F_LRTRIM(NULL)) AS
ANZ_ZEICHEN, F_LRTRIM(NULL) FROM RDB$DATABASE; |
  |
F_PADLEFT |
kompatibel
zu FreeUDFLib,
FreeUDFLibC, FreeUDFLib AvERP, GrUDF |
|
 |
ersetzbar
durch LPAD |
Entrypoint |
padleft |
|
Input |
CSTRING(4095)
CSTRING(16)
INTEGER |
String
1 der mit den Zeichen links aufgefüllt werden soll
String 2 mit dem String 1 aufgefüllt werden soll
Länge des Strings, bis auf die aufgefüllt werden soll |
Output |
CSTRING(4095) |
String der
links mit dem/den Zeichen aus String 2 auf die Gesamtlänge von
Zeichen von Parameter 3 aufgefüllt wurde |
F_RPADLEFT |
Input/Output-kompatibel
zu rFunc (PADLEFT, LOGPADLEFT) |
|
 |
ersetzbar
durch LPAD |
Entrypoint |
r_padleft |
|
Input |
CSTRING(4095)
INTEGER
CSTRING(16)
|
String
1 der mit den Zeichen links aufgefüllt werden soll
Länge des Strings, bis auf die aufgefüllt werden soll
String 2 mit dem String 1 aufgefüllt werden soll |
Output |
CSTRING(4095) |
String der
links mit dem/den Zeichen aus String 3 auf die Gesamtlänge von
Zeichen von Parameter 2 aufgefüllt wurde |
Werden
in String 2 mehr als ein Zeichen eingegeben, beginnt die Auffüllung mit
den Zeichen aus String 2 von rechts und bricht ab, wenn die geforderte
Anzahl von Gesamtzeichen erreicht ist (s. 2. TestSQL)
TestSQL
SELECT 'XXXDies ist ein Test' AS ISCORRECT, F_RPADLEFT('Dies ist ein
Test', 20, 'X') FROM RDB$DATABASE;
SELECT 'xXxDies ist ein Test' AS ISCORRECT, F_RPADLEFT('Dies ist ein
Test', 20, 'Xx') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_PADLEFT(NULL, NULL, NULL) FROM RDB$DATABASE; |
  |
F_PADRIGHT |
kompatibel
zu FreeUDFLib,
FreeUDFLibC, FreeUDFLib AvERP, GrUDF |
|
 |
ersetzbar
durch RPAD |
Entrypoint |
padright |
|
Input |
CSTRING(4095)
CSTRING(16)
INTEGER |
String
1 der mit den Zeichen rechts aufgefüllt werden soll
String 2 mit dem String 1 aufgefüllt werden soll
Länge des Strings, bis auf die aufgefüllt werden soll |
Output |
CSTRING(4095) |
String der
rechts mit dem/den Zeichen aus String 2 auf die Gesamtlänge von Zeichen
von Parameter 3 aufgefüllt wurde |
F_RPADRIGHT |
Input/Output-kompatibel
zu rFunc (PADRIGHT, LONGPADRIGHT) |
|
 |
ersetzbar
durch RPAD |
Entrypoint |
r_padright |
|
Input |
CSTRING(4095)
INTEGER
CSTRING(16)
|
String
1 der mit den Zeichen rechts aufgefüllt werden soll
Länge des Strings, bis auf die aufgefüllt werden soll
String 2 mit dem String 1 aufgefüllt werden soll |
Output |
CSTRING(4095) |
String der
rechts mit dem/den Zeichen aus String 3 auf die Gesamtlänge von Zeichen
von Parameter 2 aufgefüllt wurde |
Werden
in String 2 mehr als ein Zeichen eingegeben, beginnt die Auffüllung mit
den Zeichen aus String 2 von links und bricht ab, wenn die geforderte
Anzahl von Gesamtzeichen erreicht ist (s. 2. TestSQL)
TestSQL
SELECT 'Dies ist ein TestXXX' AS ISCORRECT, F_RPADRIGHT('Dies ist ein
Test', 20, 'X') FROM RDB$DATABASE;
SELECT 'Dies ist ein TestXxX' AS ISCORRECT, F_RPADRIGHT('Dies ist ein
Test', 20, 'Xx') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_PADRIGHT(NULL, NULL, NULL) FROM
RDB$DATABASE; |
  |
F_PADCENTER |
Funktion
von adhoc
|
Entrypoint |
padcenter |
|
Input |
CSTRING(4095)
CSTRING(16)
INTEGER |
String
1 der mit den Zeichen links und rechts aufgefüllt werden soll
String 2 mit dem String 1 aufgefüllt werden soll
Länge des Strings, bis auf die aufgefüllt werden soll |
Output |
CSTRING(4095) |
String der
links und rechts mit dem/den Zeichen aus String 2 auf die Gesamtlänge
von Zeichen von Parameter 3 aufgefüllt wurde |
Bei
“ungeradem” Auffüllen wird immer links ein
Zeichen mehr aufgefüllt.
TestSQL
SELECT 'XXDies ist ein TestXX' AS ISCORRECT, F_PADCENTER('Dies ist ein
Test', 'X', 21) FROM RDB$DATABASE;
SELECT 'XXDies ist ein TestX' AS ISCORRECT, F_PADCENTER('Dies ist ein
Test', 'X', 20) FROM RDB$DATABASE;
SELECT 'XxDies ist ein TestXx' AS ISCORRECT, F_PADCENTER('Dies ist ein
Test', 'Xx', 21) FROM RDB$DATABASE;
SELECT 'XxDies ist ein TestX' AS ISCORRECT, F_PADCENTER('Dies ist ein
Test', 'Xx', 20) FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_PADCENTER(NULL, NULL, NULL) FROM
RDB$DATABASE; |
  |
F_LINEWRAP
|
kompatibel
zu FreeUDFLib,
FreeUDFLibC, FreeUDFLib AvERP, GrUDF |
Entrypoint |
linewrap |
|
Input |
CSTRING(32760)
INTEGER
INTEGER |
String
Startposition
Spaltenbreite |
Output |
CSTRING(32760) |
alle Wörter des
Strings aus, beginnen bei der Startposition, der zusammen nicht länger
als die Spaltenbreite sind |
Zählung
beginnt bei 0.
TestSQL
SELECT 'alle zu einer Geburtstagsparty' AS ISCORRECT,
F_LINEWRAP('Wir gehen alle zu einer Geburtstagsparty', 10, 30) FROM
RDB$DATABASE;
SELECT 'alle zu einer' AS ISCORRECT, F_LINEWRAP('Wir gehen
alle zu einer Geburtstagsparty', 10, 29) FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_LINEWRAP(NULL, NULL, NULL) FROM
RDB$DATABASE; |
  |
F_REPLACE
(F_REPLACE4, ...8)
F_BIGREPLACE |
kompatibel
zu FreeUDFLibC
Input/Output-kompatibel
zu rFunc (STRREPLACE, LONGSTRREPLACE) |
|
 |
ersetzbar
durch REPLACE |
Entrypoint |
replace |
|
Input |
CSTRING(32760)
CSTRING(254)
CSTRING(254) |
String,
in dem
eine Zeichenkette ausgetauscht werden soll
der auszutauschende String
der String der neu gesetzt werden soll |
Output |
CSTRING(32760) |
String
indem Zeichenkette aus Parameter 2 durch Parameter 3
ersetzt wurden |
Einfache
Version der Funktion F_REPLACESTRING ohne Möglichkeit mehrfach zu
ersetzen sowie unabhängig von Groß-/Kleinschreibung auszutauschen.
TestSQL
SELECT 'Dies ist ein Versuch zwei Versuch drei Versuch vier TEST' AS
ISCORRECT, F_REPLACE('Dies ist ein Test zwei Test drei Test vier TEST',
'Test', 'Versuch') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_REPLACE(NULL, NULL, NULL) FROM RDB$DATABASE; |
  |
F_REPLACESTRING
(..4, ..8)
F_BIGREPLACESTRING |
kompatibel
zu FreeUDFLib AvERP, GrUDF |
Entrypoint |
replacestring |
|
Input |
CSTRING(32760)
CSTRING(254)
CSTRING(254)
INTEGER
INTEGER |
String,
in dem
eine Zeichenkette ausgetauscht werden soll
der auszutauschende String
der String der neu gesetzt werden soll
0 = nur das erste Vorkommen austauschen, 1 = alle Vorkommen austauschen
0 = Groß-/Kleinschreibung berücksichtigen, 1 = nicht berücksichtigen |
Output |
CSTRING(32760) |
String
indem Zeichenkette/n aus Parameter 2 durch Parameter
3 ersetzt wurden |
TestSQL
SELECT 'Dies ist ein Versuch zwei Test drei Test vier TEST' AS
ISCORRECT, F_REPLACESTRING('Dies ist ein Test zwei Test drei Test vier
TEST', 'Test', 'Versuch', 0, 0) FROM RDB$DATABASE;
SELECT 'Dies ist ein Versuch zwei Test drei Test vier TEST' AS
ISCORRECT, F_REPLACESTRING('Dies ist ein Test zwei Test drei Test vier
TEST', 'Test', 'Versuch', 0, 1) FROM RDB$DATABASE;
SELECT 'Dies ist ein Versuch zwei Versuch drei Versuch vier TEST' AS
ISCORRECT, F_REPLACESTRING('Dies ist ein Test zwei Test drei Test vier
TEST', 'Test', 'Versuch', 1, 0) FROM RDB$DATABASE;
SELECT 'Dies ist ein Versuch zwei Versuch drei Versuch vier Versuch' AS
ISCORRECT, F_REPLACESTRING('Dies ist ein Test zwei Test drei Test vier
TEST', 'Test', 'Versuch', 1, 1) FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_REPLACESTRING(NULL, NULL, NULL, NULL, NULL)
FROM RDB$DATABASE; |
  |
F_CONVERTSYMBOLS |
Input/Output-kompatibel
zu rFunc (CONVERTSYMBOLS, LONGCONVERTSYMBOLS) |
Entrypoint |
convertsymbols |
|
Input |
CSTRING(32760)
CSTRING(254)
CSTRING(254) |
String in dem
Zeichen ausgetauscht werden soll
String 2 mit den einzelnen
Zeichen, die ausgetauscht werden sollen
String 3 mit den
Zeichen, die die Zeichen an der gleichen Stelle aus String 2
ersetzten sollen |
Output |
CSTRING(32760) |
String
in dem alle einzelnen Zeichen aus String 2 ersetzt wurden |
TestSQL
SELECT
'(a+ab)-abc*a+b=c' AS ISCORRECT, F_CONVERTSYMBOLS('(1+12)-123*1+2=3',
'123', 'abc') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_CONVERTSYMBOLS(NULL, NULL, NULL)
FROM RDB$DATABASE; |
  |
F_REVERSE |
Funktion
von adhoc
|
|
 |
ersetzbar
durch REVERSE |
Entrypoint
|
reverse |
|
Input |
CSTRING(254) |
String der
rückwärts ausgegeben werden soll |
Output |
CSTRING(254) |
String rückwärts |
Groß-/Kleinbuchstaben
bleiben dabei so wie sie
waren.
TestSQL
SELECT 'ynamreG' AS ISCORRECT, F_REVERSE('Germany') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_REVERSE(NULL) FROM RDB$DATABASE; |
  |
F_STRIPSTRING
F_BIGSTRIPSTRING
|
kompatibel
zu FreeUDFLib,
FreeUDFLibC, FreeUDFLib AvERP, GrUDF |
Entrypoint
|
stripstring |
|
Input |
CSTRING(32760)
CSTRING(254) |
String
1 (aus
dem alle Zeichen von String 2 entfernt werden sollen)
String 2 (Zeichen die entfernt werden sollen) |
Output |
CSTRING(32760) |
String aus
dem alle die Zeichen, die im String 2 sind,
entfernt wurden |
Gegenstück
zu F_STRIPSTRINGHOLD und
F_HOLDSTRING
TestSQL
SELECT 'Ds s n Ts Tx' AS ISCORRECT, F_STRIPSTRING('Dies ist ein Test
Text', 'iet') FROM RDB$DATABASE;
SELECT 'Ds s n Ts Tx' AS ISCORRECT, F_STRIPSTRING('Dies ist ein Test
Text', 'tei') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_STRIPSTRING(NULL, NULL) FROM RDB$DATABASE; |
  |
F_STRIPSTRINGHOLD
F_HOLDSTRING
F_BIGSTRIPSTRINGHOLD |
kompatibel
zu FreeUDFLib,
FreeUDFLib AvERP, GrUDF
kompatibel
zu FreeUDFLibC
|
Entrypoint
|
stripstringhold |
|
Input |
CSTRING(32760)
CSTRING(254) |
String
1 aus
dem Zeichen entfernt werden soll
String 2 Aufflistung aller Zeichen, die nicht entfernt
werden sollen |
Output |
CSTRING(32760) |
String aus
dem alle die Zeichen, die nicht
im String 2 sind, entfernt wurden |
Die
Reihenfolge der Zeichen im String 2 spielt
keine Rolle.
Gegenstück zu F_STRIPSTRING
TestSQL
SELECT 'ieiteietet' AS ISCORRECT, F_HOLDSTRING('Dies ist ein Test
Text', 'iet') FROM RDB$DATABASE;
SELECT 'ieiteietet' AS ISCORRECT, F_HOLDSTRING('Dies ist ein Test
Text', 'tei') FROM RDB$DATABASE;
SELECT 'ieiteietet' AS ISCORRECT, F_HOLDSTRING('Dies ist ein Test
Text', 'iet') FROM RDB$DATABASE;
SELECT 'ieiteietet' AS ISCORRECT, F_HOLDSTRING('Dies ist ein Test
Text', 'tei') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_STRIPSTRINGHOLD(NULL, NULL) FROM
RDB$DATABASE; |
  |
F_REPEATTRIM |
Input/Output-kompatibel
zu rFunc (REPEATTRIM, LONGREPEATTRIM)
|
Entrypoint
|
repeattrim |
|
Input |
CSTRING(8190)
CSTRING(1) |
String
1 aus
dem Zeichen entfernt werden soll
Zeichen das entfernt
werden soll |
Output |
CSTRING(8190) |
String aus dem alle
Wiederholungen von String 2
entfernt wurden |
TestSQL
SELECT '123' AS ISCORRECT, F_REPEATTRIM('12223', '2') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_REPEATTRIM(NULL, NULL) FROM RDB$DATABASE;
|
  |
F_STRREPEAT |
Input/Output-kompatibel
zu rFunc (STRREPEAT, LONGSTRREPEAT)
|
Entrypoint
|
strrepeat |
|
Input |
CSTRING(254)
SMALLINT |
String
der wiederholt werden soll
Anzahl des gewünschten Vorkommens von String 1
|
Output |
CSTRING(8190) |
String 1 Parameter 2 mal
vorkommend
|
Es ist
darauf zu achten, daß der Output die definierte Länge nicht übersteigt!
TestSQL
SELECT 'TestTestTest' AS ISCORRECT, F_STRREPEAT('Test', 3) FROM
RDB$DATABASE;
SELECT '' AS ISCORRECT, F_STRREPEAT('Test', 0)
FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_STRREPEAT(NULL,
NULL) FROM
RDB$DATABASE; |
  |
F_STRSTUFF |
Input/Output-kompatibel
zu rFunc (STRSTUFF, LONGSTRSTUFF)
|
|
 |
ersetzbar
durch OVERLAY |
Entrypoint
|
strstuff |
|
Input |
CSTRING(8190)
SMALLINT
SMALLINT
CSTRING(254) |
String
1 in
dem Zeichen ausgetauscht werden sollen
Anfangsposition
Anzahl der Zeichen, die ausgetauscht werden
sollen
Zeichen die gesetzt werden sollen |
Output |
CSTRING(81900) |
String in
dem ab Anfangsposition Parameter 3 Zeichen mit den Zeichen aus
Parameter 4 ersetzt wurden |
Die Zählung der Anfangsposition beginnt bei 1.
Die
Anzahl der Zeichen die entfernt und die Anzahl der Zeichen, die dafür
eingesetzt werden müssen nicht identisch sein.
TestSQL
SELECT '12abcd567890' AS ISCORRECT,
F_STRSTUFF('1234567890', 3, 2, 'abcd') FROM RDB$DATABASE;
SELECT
NULL AS ISCORRECT, F_STRSTUFF(NULL, NULL, NULL, NULL) FROM
RDB$DATABASE; |
  |
F_COLLATEBR |
kompatibel
zu GrUDF |
Entrypoint
|
collatebr |
|
Input |
CSTRING(32760) |
String, indem
die Sonderzeichen umgewandelt werden sollen |
Output |
CSTRING(32760) |
umgewandelter
String |
Wandelt
bestimmte „Umlaute“ zu einen
vorgegebenen Zeichen
á, â, ã, à, ä, å, Á, Â, Ã, À, Ä, Å
=> A
é, ê, è, ë, É, Ê, È, Ë
=> E
í, î, ì, ï, Í, Î, Ì, Ï
=> I
ó, ô, õ, ò, ö, Ó, Ô, Õ, Ò, Ö
=> O
ú, û, ù, ü,Ú, Û, Ù, Ü
=> U
ç, Ç
=> C
ñ, Ñ
=> N
ý, ÿ, Ý
=> Y
TestSQL
SELECT 'AAAAAAAAAAAA' AS ISCORRECT, F_COLLATEBR('áâãàäåÁÂÃÀÄÅ')
FROM RDB$DATABASE;
SELECT 'EEEEEEEE' AS ISCORRECT, F_COLLATEBR('éêèëÉÊÈË') FROM
RDB$DATABASE;
SELECT 'IIIIIIII' AS ISCORRECT, F_COLLATEBR('íîìïÍÎÌÏ') FROM
RDB$DATABASE;
SELECT 'OOOOOOOOOO' AS ISCORRECT, F_COLLATEBR('óôõòöÓÔÕÒÖ') FROM
RDB$DATABASE;
SELECT 'UUUUUUUU' AS ISCORRECT, F_COLLATEBR('úûùüÚÛÙÜ') FROM
RDB$DATABASE;
SELECT 'CC' AS ISCORRECT, F_COLLATEBR('çÇ') FROM RDB$DATABASE;
SELECT 'NN' AS ISCORRECT, F_COLLATEBR('ñÑ') FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_COLLATEBR(NULL) FROM RDB$DATABASE; |
  |
F_KEYUP |
Funktion
von adhoc |
Entrypoint
|
keyup |
|
Input |
CSTRING(32760)
SMALLINT |
String der aufbereitet
werden soll
Länge
des Output-Strings |
Output |
CSTRING(32760) |
umgewandelter
String |
Wandelt
einen String um
- alles nach Großbuchstaben
- nimmt
nur alphanumerische Zeichen incl. untenstehende Umlaut-Zeichen
-
wandelt untenstehende Umlaut-Zeichen zu "normal" Zeichen um
Á, Â, Ã, À, Ä, Å
=> A
É, Ê, È, Ë
=> E
Í, Î, Ì, Ï
=> I
Ó, Ô, Õ, Ò, Ö
=> O
Ú, Û, Ù, Ü
=> U
Ç
=> C
Æ
=> AE
Ø
=> OE
ß
=> SS
Đ
=> D
Ñ
=> N
Ý
=> Y
- kürzt den String auf die angegebene
Länge
TestSQL
SELECT
'7A 5E 5I 6O 5U 2C 2AE 2OE 4S 2D 2N 2Y 1234567' AS ISCORRECT,
F_KEYUP('AáâãàäåEéêèëIíîìïOóôõòöUúûùüCçAEæOEøSSßDd.NñYý1234567890', 55)
FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_KEYUP(NULL,
NULL) FROM RDB$DATABASE; |
  |
F_PRED
|
Funktion
von adhoc
|
Entrypoint
|
predecessor |
|
Input |
CSTRING(1)
INTEGER |
Zeichen,
zu dem
ein Nachfolger gesucht werden soll
Anzahl der Zeichen im Zeichensatz, um das der Nachfolger von Parameter
1 (fortlaufend im Zeichensatz) abweichen soll |
Output |
CSTRING(1) |
n-Nachfolger
des Zeichens aus Parameter 1 |
Bei
Parameter 2 gleich 512 (oder einem
Vielfachen von 512) ist das Ergebnis gleich dem Input.
Test SQL
SELECT 'b' AS ISCORRECT, F_PRED('a', 1) FROM RDB$DATABASE;
SELECT 'b' AS ISCORRECT, F_PRED('c', -1) FROM RDB$DATABASE;
SELECT 'a' AS ISCORRECT, F_PRED('a', 512) FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_PRED(NULL, NULL) FROM RDB$DATABASE; |
  |
F_SUCC |
Funktion
von adhoc
|
Entrypoint
|
successor |
|
Input |
CSTRING(1)
INTEGER |
Zeichen,
zu dem
ein Vorgänger gesucht werden soll
Anzahl der Zeichen im Zeichensatz, um das der Vorgänger von Parameter 1
(rückwärts im Zeichensatz) abweichen soll |
Output |
CSTRING(1) |
n-Vorgänger des
Zeichens aus Parameter 1 |
Bei
Parameter 2 gleich 512 (oder einem
Vielfachen von 512) ist das Ergebnis gleich dem Input.
Test SQL
SELECT 'a' AS ISCORRECT, F_SUCC('b', 1) FROM RDB$DATABASE;
SELECT 'c' AS ISCORRECT, F_SUCC('b', -1) FROM RDB$DATABASE;
SELECT 'b' AS ISCORRECT, F_SUCC('b', 512) FROM RDB$DATABASE;
SELECT NULL AS ISCORRECT, F_SUCC(NULL, NULL) FROM RDB$DATABASE; |
  |