begin process at 2010 03 19 22:01:02
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fonctions

 > 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

Note :
4 / 10 - par 1 personne
4,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fonctions Classé sous :chiffre, position, string, integer Niveau :Initié Date de création :17/04/2007 Date de mise à jour :20/04/2007 17:26:07 Vu :5 875

Auteur : fabrice69

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note


 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 du même auteur

SQL SERVER - OBTENIR LES VALEURS CORRESPONDANT A DES UNICODE
SQL SERVER 2000 - VIDER ET COMPACTER TOUTES LES BASES DE DON...
SQL SERVER 2005 : OBTENIR LA LISTE DES BASES DE CONTENU D'UN...
SQL SERVER - UPDATE D'UNE TABLE EN BOUCLE PAR LOT
SQL SERVER - MODIFIER LA CROISSANCE DES FICHIERS DE BASE DE ...

 Sources de la même categorie

Source avec Zip CALCUL UNE DIFFÉRENCE DE DATE EN FONCTION DE JOURS FÉRIÉS/TR... par Sieurcoug
Source avec Zip CONVERSION DE NOMBRE EN LETTRES (SQL) par wormlore
NO HTML BALISE [MYSQL] par abdoulax
MYSQL : FONCTION POUR GÉRER DES COMPTEURS ÉQUIVALENT AUX SÉQ... par maitredede
RÉINDEXER TOUTES LES TABLES D'UNE BASE DE DONNÉES par pneau

 Sources en rapport avec celle ci

SQL SERVER – AGRÉGER DES CHAMPS VARCHAR par skweeky
LES FONCTIONS SUR CHAÎNE DE CARACTÈRES EN TRANSACT-SQL par IgorN2004
SQL SERVER - FONCTION QUI RENVOI LE SUFFIXE D'UNE CHAINE DE ... par fabrice69

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


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'&#233;dition d'un &#233;tat, mais le champ &#224; trier poss&#232;de parfois un chiffre au d&#233;b Binary 16 to String [ par vapo ] Bonjour, Je m'explique, j'aimerai dans une proc&#233;dure stock&#233;e&nbsp; (SQLServer 2000)&nbsp; faire une copie de donn&#233;es&nbsp; d'une table Transformation d'un binary16 eb String.... [ par vapo ] Bonjour, Je m'explique, j'aimerai dans une requ&#234;te SQL (SQLServer 2000)&nbsp; faire une copie de donn&#233;es&nbsp; d'une table vers une autre, test si string (datetime) est correct. [ par tmcuh ] Voil&#224; un big soucis avec SQL. Je r&#233;cup&#232;re une donn&#233;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&#224; j'ai une base de donn&#233;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&#233;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


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales