Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[OT] Les fonctions sur chaîne de caractères en Transact-SQL

1 réponse
Avatar
Igor2004
Mesdames et Messieurs,

Je voudrais bien vous proposer gratuitement les fonctions en Transact-SQL
qui sont les suivantes

AT(): Renvoie la position numérique du début de la énième occurrence d'une
expression caractère à l'intérieur d'une autre expression caractère, en
comptant à partir du caractère le plus à gauche.
RAT(): Renvoie la position numérique de la dernière occurrence (extrême
droite) d'une chaîne de caractères au sein d'une autre chaîne de caractères.
OCCURS(): Renvoie le nombre d'occurrences d'une expression caractère à
l'intérieur d'une autre expression caractère (y compris les chevauchements
éventuels).
OCCURS2():Renvoie le nombre d'occurrences d'une expression caractère à
l'intérieur d'une autre expression caractère (en excluant les chevauchements
éventuels).
PADL(): Renvoie une chaîne de caractères à la longueur spécifiée à partir
d'une expression complétée à gauche par des espaces ou des caractères.
PADR(): Renvoie une chaîne de caractères à la longueur spécifiée à partir
d'une expression complétée à droite par des espaces ou des caractères.
PADC(): Renvoie une chaîne de caractères à la longueur spécifiée à partir
d'une expression complétée des deux côtés par des espaces ou des caractères.
CHRTRAN(): Remplace chaque caractère dans une expression caractère, qui
correspond à un caractère d'une deuxième expression caractère, par le
caractère correspondant d'une troisième expression caractère.
STRTRAN(): Recherche dans une expression caractère des occurrences d'une
deuxième expression caractère, puis remplace chaque occurrence par une
troisième expression caractère. À la différence d'une fonction intégrée
Replace, STRTRAN a trois paramètres supplémentaires.
STRFILTER(): Enlève tous les caractères d'une chaîne sauf ceux qui sont
spécifiés.
GETWORDCOUNT(): Renvoie le nombre de mots à l'intérieur d'une chaîne.
GETWORDNUM(): Renvoie un mot spécifié d'une chaîne.
PROPER(): Renvoie, à partir d'une expression caractère, une chaîne
orthographiée comme un nom propre, c'est-à-dire avec une majuscule initiale.
RCHARINDEX(): Est similaire à une fonction intégrée Charindex, mais la
fonction commence la recherche à partir de la droite.
ARABTOROMAN(): Renvoie un nombre romain équivalent à une expression
numérique spécifiée (de 1 à 3999).
ROMANTOARAB(): Renvoie une expression numérique équivalente à un nombre
romain spécifié (de I à MMMCMXCIX).

AT, PADL, PADR, CHRTRAN, PROPER sont semblables aux fonctions Oracle PL/SQL
INSTR, LPAD, RPAD, TRANSLATE, INITCAP

Plus de 4000 personnes ont déjà téléchargé ces fonctions. Qui sait,
peut-être seront-ils utiles pour vous ?


Pour plus d'information, veuillez visiter
http://www.universalthread.com/wconnect/wc.dll?LevelExtreme~2,54,33,27115
où http://nikiforov.developpez.com/ (en français)

Veuillez télécharger le fichier
http://www.universalthread.com/wconnect/wc.dll?LevelExtreme~2,2,27115

Veuillez agréer, Mesdames et Messieurs, l'expression de mes meilleurs
sentiments.

1 réponse

Avatar
Philippe T [MS]
Bonjour,

Tu peux également ajouter cette fonction à ton référentiel. Elle permet de
spliter une chaine de caractère en fonction d'un caractère délimitant et de
renvoyer une table correspondant à ce split.

<<
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<UserFunction name="cf_GetSplitTable">

<Object> Return the result of a String split as a table
</Object>

<History Author = "Philippe TROTIN - " Date =
"18/05/2004"> Core 2.1 </History>

</UserFunction>
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
CREATE FUNCTION dbo.cf_GetSplitTable
(
@sText nvarchar(4000),
@sDelim nvarchar(20) = ' '
)
RETURNS @MySplitTable TABLE (MY_VALUE nvarchar(4000) COLLATE
database_default, MY_ORDER int)
BEGIN

DECLARE @Val_Next_1 int
DECLARE @Val_Next_2 int
DECLARE @OccurenceNumber int

-- If the separator is not find
SET @Val_Next_1 = CHARINDEX(@sDelim, @sText)

IF @Val_Next_1 = 0
BEGIN
IF @sText <> ''
BEGIN
INSERT INTO @MySplitTable( MY_VALUE, MY_ORDER )
VALUES( @sText, 1 )
END

RETURN
END

-- Insert the first occurence
SET @OccurenceNumber = 1

INSERT INTO @MySplitTable( MY_VALUE, MY_ORDER )
VALUES( SUBSTRING(@sText, 1, @Val_Next_1 - 1), @OccurenceNumber )

-- Insert all other occurence
WHILE ( 1 = 1 )
BEGIN
SET @Val_Next_1 = CHARINDEX(@sDelim, @sText)
SET @Val_Next_2 = CHARINDEX(@sDelim, SUBSTRING(@sText, @Val_Next_1 + 1,
4000))

SET @sText = SUBSTRING(@sText, @Val_Next_1 + 1, 4000)

IF @Val_Next_2 <> 0
BEGIN
SET @OccurenceNumber = @OccurenceNumber + 1

INSERT INTO @MySplitTable( MY_VALUE, MY_ORDER )
VALUES( SUBSTRING(@sText, 1, @Val_Next_2 - 1), @OccurenceNumber )
END
ELSE
BEGIN
IF @sText <> ''
BEGIN
SET @OccurenceNumber = @OccurenceNumber + 1

INSERT INTO @MySplitTable( MY_VALUE, MY_ORDER )
VALUES( @sText, @OccurenceNumber )
END
BREAK
END
END

RETURN
END







----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France

"Igor2004" wrote in message
news:
Mesdames et Messieurs,

Je voudrais bien vous proposer gratuitement les fonctions en Transact-SQL
qui sont les suivantes

AT(): Renvoie la position numérique du début de la énième occurrence d'une
expression caractère à l'intérieur d'une autre expression caractère, en
comptant à partir du caractère le plus à gauche.
RAT(): Renvoie la position numérique de la dernière occurrence (extrême
droite) d'une chaîne de caractères au sein d'une autre chaîne de
caractères.
OCCURS(): Renvoie le nombre d'occurrences d'une expression caractère à
l'intérieur d'une autre expression caractère (y compris les chevauchements
éventuels).
OCCURS2():Renvoie le nombre d'occurrences d'une expression caractère à
l'intérieur d'une autre expression caractère (en excluant les
chevauchements
éventuels).
PADL(): Renvoie une chaîne de caractères à la longueur spécifiée à partir
d'une expression complétée à gauche par des espaces ou des caractères.
PADR(): Renvoie une chaîne de caractères à la longueur spécifiée à partir
d'une expression complétée à droite par des espaces ou des caractères.
PADC(): Renvoie une chaîne de caractères à la longueur spécifiée à partir
d'une expression complétée des deux côtés par des espaces ou des
caractères.
CHRTRAN(): Remplace chaque caractère dans une expression caractère, qui
correspond à un caractère d'une deuxième expression caractère, par le
caractère correspondant d'une troisième expression caractère.
STRTRAN(): Recherche dans une expression caractère des occurrences d'une
deuxième expression caractère, puis remplace chaque occurrence par une
troisième expression caractère. À la différence d'une fonction intégrée
Replace, STRTRAN a trois paramètres supplémentaires.
STRFILTER(): Enlève tous les caractères d'une chaîne sauf ceux qui sont
spécifiés.
GETWORDCOUNT(): Renvoie le nombre de mots à l'intérieur d'une chaîne.
GETWORDNUM(): Renvoie un mot spécifié d'une chaîne.
PROPER(): Renvoie, à partir d'une expression caractère, une chaîne
orthographiée comme un nom propre, c'est-à-dire avec une majuscule
initiale.
RCHARINDEX(): Est similaire à une fonction intégrée Charindex, mais la
fonction commence la recherche à partir de la droite.
ARABTOROMAN(): Renvoie un nombre romain équivalent à une expression
numérique spécifiée (de 1 à 3999).
ROMANTOARAB(): Renvoie une expression numérique équivalente à un nombre
romain spécifié (de I à MMMCMXCIX).

AT, PADL, PADR, CHRTRAN, PROPER sont semblables aux fonctions Oracle
PL/SQL
INSTR, LPAD, RPAD, TRANSLATE, INITCAP

Plus de 4000 personnes ont déjà téléchargé ces fonctions. Qui sait,
peut-être seront-ils utiles pour vous ?


Pour plus d'information, veuillez visiter
http://www.universalthread.com/wconnect/wc.dll?LevelExtreme~2,54,33,27115
où http://nikiforov.developpez.com/ (en français)

Veuillez télécharger le fichier
http://www.universalthread.com/wconnect/wc.dll?LevelExtreme~2,2,27115

Veuillez agréer, Mesdames et Messieurs, l'expression de mes meilleurs
sentiments.