Accueil > > > SQL SERVER - OBTENIR LA POSITION DU PREMIER CHIFFRE D'UNE CHAINE DE CHARACTERES
SQL SERVER - OBTENIR LA POSITION DU PREMIER CHIFFRE D'UNE CHAINE DE CHARACTERES
Information sur la source
Description
Dans certains projets, on se trouve avec des données différentes qui sont mixées dans une colonne définie d'une table de base de données. Ainsi, cette fonction permet de retrouver la position du premier chiffre d'une chaine.
Source
- set ANSI_NULLS ON
- set QUOTED_IDENTIFIER ON
- GO
- ---------------------------------------------------------------
-
- CREATE FUNCTION [dbo].[FN_CHARINDEX_FIRST_NUMERIC] (@NOMDIV nvarchar(30))
- RETURNS smallint
-
- AS
-
- BEGIN
-
- DECLARE @nom nvarchar(30)
- DECLARE @i smallint
- DECLARE @j smallint
- SET @i = 1
- SET @j = 0
-
- WHILE @i < len(@nomdiv)
- BEGIN
- DECLARE @car nvarchar(1)
- SET @car = (SUBSTRING(@NOMDIV, @i, @i) )
- IF @car IN ('1', '2', '3', '4', '5', '6', '7', '8', '9', '0')
- BEGIN
- SET @j = @i
- BREAK
- END
- ELSE
- SET @i = @i + 1
- END
-
- RETURN @j
- END
- ---------------------------------------------------------------
- -- Une seconde solution fournie par Christian plus performante
-
- CREATE FUNCTION [dbo].[FN_CHARINDEX_FIRST_NUMERIC_V2] (@NOMDIV nvarchar(30))
- RETURNS smallint
-
- AS
-
- BEGIN
-
- RETURN PATINDEX ('%[0123456789]%', @NOMDIV)
-
- END
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
---------------------------------------------------------------
CREATE FUNCTION [dbo].[FN_CHARINDEX_FIRST_NUMERIC] (@NOMDIV nvarchar(30))
RETURNS smallint
AS
BEGIN
DECLARE @nom nvarchar(30)
DECLARE @i smallint
DECLARE @j smallint
SET @i = 1
SET @j = 0
WHILE @i < len(@nomdiv)
BEGIN
DECLARE @car nvarchar(1)
SET @car = (SUBSTRING(@NOMDIV, @i, @i) )
IF @car IN ('1', '2', '3', '4', '5', '6', '7', '8', '9', '0')
BEGIN
SET @j = @i
BREAK
END
ELSE
SET @i = @i + 1
END
RETURN @j
END
---------------------------------------------------------------
-- Une seconde solution fournie par Christian plus performante
CREATE FUNCTION [dbo].[FN_CHARINDEX_FIRST_NUMERIC_V2] (@NOMDIV nvarchar(30))
RETURNS smallint
AS
BEGIN
RETURN PATINDEX ('%[0123456789]%', @NOMDIV)
END
Conclusion
Merci à Gabrielle et Christian pour les astuces.
Bon coding
Romelard Fabrice [MVP]
Historique
- 17 avril 2007 11:56:16 :
- Modification en cas d'absence
- 20 avril 2007 17:26:07 :
- Modification suite à la requête fournie par Christian
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
convertir string en money [ par chris81 ]
comment puis je faire pour convertir un string pour l'inserer dans mon champ de type moneymercihttp://www.correzeweb.comhttp://www.localetv.com
Comment ignorer un chiffre pour un tri alphabétique ? [ par tony_montana28 ]
Bonjour,Je cherche a trier une table Access pour l'édition d'un état, mais le champ à trier possède parfois un chiffre au déb
Binary 16 to String [ par vapo ]
Bonjour, Je m'explique, j'aimerai dans une procédure stockée (SQLServer 2000) faire une copie de données d'une table
Transformation d'un binary16 eb String.... [ par vapo ]
Bonjour, Je m'explique, j'aimerai dans une requête SQL (SQLServer 2000) faire une copie de données d'une table vers une autre,
test si string (datetime) est correct. [ par tmcuh ]
Voilà un big soucis avec SQL. Je récupère une donnée de type char[10] provenant d'une table (qui ne m'appartient pas) et je dois t
inserer Html dans une Table SQL [ par blueangel ]
Bonjour tout le monde,Voila je veux inserer dans une table "maTable" dans SqlServer du string qui contient du html alors quand la taille du html est r
Requete pour savoir par quel chiffre commence un champ [ par romagnoli64 ]
Bonsoir,voilà j'ai une base de données (sous Access 97) et j'ai un champ qui commence par des chiffres suivis d'un slash / .Et j'aimerais r&
Un commande avec un String contenant un ' [ par forum_ma ]
Bonjour je fais un programme en VB.net, je passe une commande a ma base de donnée, dans cette commande il y a un champ texte, lorsque le texte co
Clés Primaire en VARCHAR [ par ffert ]
Bonjour, Je souhaite créer des clés primaires en VARCHAR(30), mais j'ai peur que ce soit plus lent qu'avec un INTEGER ou un INTEGER Autoincrémental. s
Problème requête UPDATE. [ par woot6768 ]
Bonjour,J'ai un soucis avec une requête UPDATE, je vous fournis le code correspondant (codé en c#) :string lineCmd = "UPDAT
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : ORACLE FORMSRE : ORACLE FORMS par csmahicham
Cliquez pour lire la suite par csmahicham
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|