Fonctions sur chaînes

Dans le langage CLEM, vous pouvez effectuer les opérations suivantes avec des chaînes :

  • Comparer des chaînes
  • Créer des chaînes
  • Accéder à des caractères

Dans une expression CLEM, une chaîne est une suite de caractères insérée entre guillemets doubles ("chaînes"). Tout caractère alphanumérique unique peut être un caractère (CHAR). Ces caractères sont déclarés dans les expressions CLEM à l'aide de guillements simples inversés : `<caractère>`, (par exemple, `z`, `A`, ou `2`). Les caractères hors limites ou les indices négatifs d'une chaîne génèrent un comportement indéfini.

Remarque : Les comparaisons entre les chaînes qui utilisent et n'utilisent pas la répercussion SQL peuvent générer des résultats différents lorsqu'il existe des espaces de fin de chaîne.
Tableau 1. Fonctions sur chaînes CLEM
Fonction Résultat Description
allbutfirst(N, STRING) Chaîne Renvoie la chaîne STRING où les N premiers caractères ont été supprimés.
allbutlast(N, STRING) Chaîne Renvoie la chaîne STRING où les derniers caractères ont été supprimés.
alphabefore(STRING1, STRING2) Booléen Utilisée pour vérifier l'ordre alphabétique des chaînes. Renvoie une valeur vraie (True) si STRING1 précède STRING2.
endstring(LENGTH, STRING) Chaîne Extrait les N derniers caractères de la chaîne indiquée. Si la longueur de la chaîne est inférieure ou égale à la valeur spécifiée, aucune modification n'a lieu.
hasendstring(STRING, SUBSTRING) Entier Cette fonction est identique à isendstring(SUBSTRING, STRING).
hasmidstring(STRING, SUBSTRING) Entier Cette fonction est identique à ismidstring(SUBSTRING, STRING) (sous-chaîne incorporée).
hasstartstring(STRING, SUBSTRING) Entier Cette fonction est identique à isstartstring(SUBSTRING, STRING).
hassubstring(STRING, N, SUBSTRING) Entier Cette fonction est identique à issubstring(SUB_STRING, N, STRING), où N prend par défaut la valeur 1.
count_substring(STRING, SUBSTRING) Entier Renvoie le nombre de fois où la sous-chaîne indiquée apparaît dans la chaîne. Par exemple, count_substring("foooo.txt", "oo") renvoie 3.
hassubstring(STRING, SUBSTRING) Entier Cette fonction est identique à issubstring(SUBSTRING, 1, STRING)N prend par défaut la valeur 1.
isalphacode(CHAR) Booléen Renvoie la valeur true (vrai) si CHAR est un caractère dont le code de caractère est une lettre dans la chaîne indiquée (souvent un nom de champ). Ou alors, cette fonction renvoie une valeur 0. Par exemple, isalphacode(produce_num(1)).
isendstring(SUBSTRING, STRING) Entier Si la chaîne STRING se termine par la sous-chaîne SUBSTRING, cette fonction renvoie l'indice d'entier de SUBSTRING dans STRING. Sinon, cette fonction renvoie la valeur 0.
islowercode(CHAR) Booléen Renvoie la valeur true (vrai) si CHAR est un caractère en minuscule dans la chaîne indiquée (souvent un nom de champ). Sinon, la fonction renvoie la valeur 0. Par exemple, les expressions islowercode(``) et islowercode(country_name(2)) sont valides.
ismidstring(SUBSTRING, STRING) Entier Si SUBSTRING est une sous-chaîne de la chaîne STRING, mais qu'elle ne commence pas par le premier caractère de STRING et ne se termine pas par le dernier, cette fonction renvoie l'indice auquel la sous-chaîne commence. Sinon, cette fonction renvoie la valeur 0.
isnumbercode(CHAR) Booléen Renvoie la valeur true (vrai) si CHAR est un caractère dont le code de caractère est un chiffre dans la chaîne indiquée (souvent un nom de champ). Sinon, cette fonction renvoie la valeur 0 (par exemple, isnumbercode(product_id(2))).
isstartstring(SUBSTRING, STRING) Entier Si la chaîne STRING commence par la sous-chaîne SUBSTRING, cette fonction renvoie l'indice 1. Sinon, elle renvoie une valeur 0.
issubstring(SUBSTRING, N, STRING) Entier Recherche dans la chaîne STRING, à partir du caractère numéro N, la sous-chaîne SUBSTRING. Si cette sous-chaîne est trouvée, la fonction renvoie l'indice d'entier auquel la sous-chaîne correspondante commence. Sinon, cette fonction renvoie la valeur 0. Si la valeur de N n'est pas fournie, cette fonction prend par défaut la valeur 1.
issubstring(SUBSTRING, STRING) Entier Recherche dans la chaîne STRING, à partir du caractère numéro N, la sous-chaîne SUBSTRING. Si cette sous-chaîne est trouvée, la fonction renvoie l'indice d'entier auquel la sous-chaîne correspondante commence. Sinon, cette fonction renvoie la valeur 0. Si la valeur de N n'est pas fournie, cette fonction prend par défaut la valeur 1.
issubstring_count(SUBSTRING, N, STRING): Entier Renvoie l'index de la Nième occurrence de la sous-chaîne SUBSTRING au sein de la chaîne STRING indiquée. Si le nombre d'occurrences de la sous-chaîne SUBSTRING est inférieur à N occurrences, 0 est renvoyé.
issubstring_lim(SUBSTRING, N, STARTLIM, ENDLIM, STRING) Entier Cette fonction est identique à issubstring, mais la correspondance doit commencer à l'indice STARTLIM ou avant, et doit se terminer à l'indice ENDLIM ou avant. Les contraintes STARTLIM ou ENDLIM peuvent être désactivées en donnant une valeur fausse à l'un des arguments ; par exemple, issubstring_lim(SUBSTRING, N, false, false, STRING) est égale à issubstring.
isuppercode(CHAR) Booléen Renvoie une valeur true (vrai) si CHAR est un caractère majuscule. Sinon, la fonction renvoie la valeur 0. Par exemple, les expressions isuppercode(``) et isuppercode(country_name(2)) sont valides.
last(CHAR) Chaîne Renvoie le dernier caractère CHAR de la chaîne STRING (qui doit contenir au moins un caractère).
length(STRING) Entier Renvoie la longueur de la chaîne STRING, en nombre de caractères.
locchar(CHAR, N, STRING) Entier Sert à identifier l'emplacement de caractères dans des champs symboliques. Cette fonction recherche le caractère CHAR dans la chaîne STRING, en commençant par le caractère numéro N de STRING. Cette fonction renvoie une valeur indiquant l'emplacement (à partir de N) où se trouve le caractère. Si le caractère est introuvable, la fonction renvoie la valeur 0. Si la fonction a un décalage (N) incorrect (par exemple, décalage dépassant la longueur de la chaîne), elle renvoie $null$. Par exemple, locchar(`n`, 2, web_page) recherche dans le champweb_page le caractère `n` en commençant par le deuxième caractère de la valeur du champ. Remarque : veillez à encadrer le caractère spécifié de guillemets simples inversés.
locchar_back(CHAR, N, STRING) Entier Semblable à locchar, cette fonction effectue la recherche vers l'arrière, en commençant par le caractère numéro N. Par exemple, locchar_back(`n`, 9, web_page) effectue une recherche dans le champ web_page en commençant par le neuvième caractère, puis en repartant vers le début de la chaîne. Si cette fonction a un décalage incorrect (par exemple, décalage dépassant la longueur de la chaîne), elle renvoie $null$. Pour plus d'efficacité, employez locchar_back en association avec la fonction length(<field>) afin d'utiliser la longueur de la valeur actuelle du champ de manière dynamique (par exemple, locchar_back(`n`, (length(web_page)), web_page)).
lowertoupper(CHAR) lowertoupper (STRING) CHAR ou Chaîne L'entrée peut être soit une chaîne soit un caractère, qui est utilisé dans cette fonction pour renvoyer un nouvel élément de même type, avec les caractères minuscules convertis dans leurs équivalents majuscules. Par exemple, les expressions lowertoupper(`a`), lowertoupper(“Ma chaîne”) et lowertoupper(field_name(2)) sont valides.
matches Booléen Renvoie la valeur True (vrai) si une chaîne correspond à un motif spécifié. Le motif doit être un littéral de chaîne ; il ne peut pas s'agir d'un nom de champ contenant un motif. Il est possible d'inclure un point d'interrogation (?) dans le motif pour obtenir une correspondance exacte avec un caractère ; un astérisque (*) implique une correspondance avec zéro ou plusieurs caractères. Pour obtenir une correspondance avec un point d'interrogation ou un astérisque de littéral (plutôt que de les utiliser comme caractères génériques), il est possible d'utiliser une barre oblique inverse (\) en tant que caractère d'échappement.
replace(SUBSTRING, NEWSUBSTRING, STRING) Chaîne Dans la chaîne STRING indiquée, remplace toutes les instances de la sous-chaîne SUBSTRING par la nouvelle sous-chaîne NEWSUBSTRING.
replicate(COUNT, STRING) chaîne Renvoie une chaîne qui se compose de la chaîne d'origine copiée le nombre de fois indiqué.
stripchar(CHAR,STRING) chaîne Cette fonction permet de supprimer des caractères d'une chaîne ou d'un champ. Vous pouvez l'utiliser, par exemple, pour supprimer de vos données des symboles de devises afin d'obtenir un simple nombre ou un nom. Par exemple, la syntaxe stripchar(`$`, 'Cost') renvoie un nouveau champ où toutes les valeurs apparaissent sans le symbole dollar. Remarque : veillez à encadrer le caractère spécifié de guillemets simples inversés.
skipchar(CHAR, N, STRING) Entier Recherche tout autre caractère que CHAR dans la chaîne STRING, en commençant par le caractère numéro N. Cette fonction renvoie un indice d'entier indiquant l'endroit auquel le caractère a été trouvé. Si tous les caractères qui suivent le caractère numéro N sont des caractères CHAR, la fonction renvoie 0. Si cette fonction a un décalage incorrect (par exemple, décalage dépassant la longueur de la chaîne), elle renvoie $null$. locchar est souvent utilisé en association avec les fonctions skipchar afin de déterminer la valeur de N (point de la chaîne à partir duquel commence la recherche) : par exemple, skipchar(`s`, (locchar(`s`, 1, "MyString")), "MyString")).
skipchar_back(CHAR, N, STRING) Entier Semblable à skipchar, cette fonction effectue la recherche vers l'arrière, en commençant par le caractère numéro N.
startstring(LENGTH, STRING) Chaîne Extrait les N premiers caractères de la chaîne indiquée. Si la longueur de la chaîne est inférieure ou égale à la valeur spécifiée, aucune modification n'a lieu.
strmember(CHAR, STRING) Entier Equivaut à locchar(CHAR, 1, STRING). Renvoie un indice entier qui indique l'endroit où CHAR s'est produit pour la première fois, ou 0. Si la fonction a un décalage non valide (par exemple, un décalage au-delà de la longueur de la chaîne), cette fonction renvoie $null$.
subscrs(N, STRING) CHAR Renvoie le caractère (CHAR) numéro N de la chaîne de saisie STRING. Cette fonction peut également être écrite en sténographie, STRING(N). Par exemple, l'expression lowertoupper(“name”(1)) est correcte.
substring(N, LEN, STRING) Chaîne Renvoie la sous-chaîne SUBSTRING, constituée de LEN caractères de la chaîne STRING, à partir du caractère situé à l'indice N.
substring_between(N1, N2, STRING) chaîne Renvoie la sous-chaîne de la chaîne STRING qui commence à l'indice N1 et se termine à l'indice N2.
trim(STRING) chaîne Supprime les espaces blancs situés au début et à la fin de la chaîne indiquée.
trim_start(STRING) chaîne Supprime les espaces blancs situés au début de la chaîne indiquée.
trimend(STRING) chaîne Supprime les espaces blancs situés à la fin de la chaîne indiquée.
unicode_char(NUM) CHAR L'entrée doit contenir des valeurs décimales et non hexadécimales. Renvoie le caractère avec la valeur Unicode NUM.
unicode_value(CHAR) NUM Renvoie la valeur Unicode de CHAR
uppertolower(CHAR) uppertolower (STRING) CHAR ou Chaîne L'entrée peut être soit une chaîne soit un caractère, qui est utilisé dans cette fonction pour renvoyer un nouvel élément de même type avec les caractères en majuscule convertis dans leurs équivalents en minuscule. Remarque : n'oubliez pas d'encadrer les chaînes spécifiées de guillemets doubles et les caractères de guillemets simples inversés. Les noms de champ simples ne doivent pas contenir de guillemets.