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
COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE?COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE? par Matthieu MEZIL
Avec EF, les vues doivent être mappées sur des entity types. Le problème c'est que les entity types doivent avoir une clé. Avec EF, nous avons les complex type qui n'ont pas de clé mais les vues ne peuvent pas être mappées dessus. Avec EF4, il est possibl...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ?MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ? par junarnoalg
La prochaine session de MyTIC aura lieu à Namur, le 23 mars prochain. Pendant presque une heure, nous parlerons de SharePoint 2010. Voici un aperçu du programme.
Accueil : 17h30 Début de la session : 18h00 - Les nouvelles int...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
MYSQLSERVERMYSQLSERVER par favella
Cliquez pour lire la suite par favella
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|