IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

[SQL-SRV 2005] Rechercher un Nom et prénom sans tenir compte des caractères spéciaux


Sujet :

MS SQL Server

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut [SQL-SRV 2005] Rechercher un Nom et prénom sans tenir compte des caractères spéciaux
    Bonjour,
    j'ai une table de clients. Dans cette table, une colonne Nom et une Prénom y sont.
    Donc j'aimerai créer une procédure stockée avec en paramètre un varchar(70).

    j'aimerai donc avoir la liste de tous le client qui ont les mêmes données entrèes en paramètre.

    jusque là, rien de bien compliqué, un simpe LIKE sur les deux colonne avec le @Param+'%' pourrait suffir.

    Mais j'aimerai ne pas tenir compte de tous caractères non alphabétique se trouvant dans le nom et prénom. Que se soit [espace].,;:=+\></$^¨*µù£-_)°etc.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    NOM              Prénom
    P.O.L.K          SIC$MIM
    Nulla            Patricia
    Van den Berg     Bernard
    De,la,chambre    Jean-jacque
    Donc si je fait une recherche sur : polksicmi
    il me retournera le numéro du compte P.O.L.K SIC$MIM

    Donc si je fait une recherche sur : Nullapat
    il me retournera le numéro du compte Nulla Patricia

    Donc si je fait une recherche sur : VandenBerg
    il me retournera le numéro du compte Van den Berg Bernard

    Donc si je fait une recherche sur : De la chambre
    il me retournera le numéro du compte De,la,chambre Jean-jacque

    Avez vous une idée ?

    D'avance je vous remercie pour tout aide pouvant trouver une solution efficace

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Bon je viens de créer une fonction qui à l'air de fonctionner
    Elle enlève tous les caractères non-alphabétique d'une chaine texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    CREATE FUNCTION [sc_other].[DeleteCharSpec] 
    (
    @String varchar(100)
    )
    RETURNSvarchar(100)
    AS
    BEGIN
    DECLARE @L int
    DECLARE @CharSpec char(43)
    
    SET @CharSpec ='., ;:/=+~\<>£µ$*][-_)(§!{}@&|#''"0123456789'
    SET @L = 43
    while @L <> 0 
    begin
    SET @String =Replace(@String,SubString(@CharSpec,@L,1),'')
    SET @L = @L-1
    end 
    RETURN @String
    END
    
    Si vous avez une autre solution plus optimisée. N'hésitez pas.
    Merci

    (Je mettrai le tag Résolu fin de la journée si rien d'autre n'a été trouvé)

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Juste pour avoir votre avis
    Si j'utilise cette proc, le traitement met trop longtemps
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    CREATEPROCEDURE [sc_par].[GetPartNumByNomPre]
    -- Add the parameters for the stored procedure here
    @NomPren varchar(70),
    @Result int out
    AS
    BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SETNOCOUNTON;
    SET @NomPren = sc_other.DeleteCharSpec(@NomPren)+'%'
    -- Insert statements for procedure here
    SELECT @Result = NPAR_NUM 
    FROM D_NPAR 
    WHERE sc_other.DeleteCharSpec((NPAR_NOM)+
    (
    case 
    when NPAR_PRE isnull
    then''
    end))LIKE @NomPren
    if @Result isnull
    SET @Result = 0
    END
    
    si j'utilise cette proc, elle est bcp plus rapide mais un peu barbare
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    CREATEPROCEDURE [sc_par].[GetPartNumByNomPre1]
    -- Add the parameters for the stored procedure here
    @NomPren varchar(70),
    @Result int out
    AS
    BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SETNOCOUNTON;
    SET @NomPren = sc_other.FormatText(@NomPren)
    -- Insert statements for procedure here
    SELECT @Result = NPAR_NUM 
    FROM D_NPAR 
    WHERE(NPAR_NOM+
    (
    case 
    when NPAR_PRE isnull
    then''
    end))LIKE @NomPren
    if @Result isnull
    SET @Result = 0
    END
    
    Sachant que
    SET @NomPren = sc_other.FormatText(@NomPren)

    --Cette fonction renvoie le texte du paramètre + entre chaques caractères de ce texte le caractère '%'.

    exemple :
    "Dujardin Jean-François" devient "%D%u%j%a%r%d%i%n% %J%e%a%n%-%F%r%a%n%ç%o%i%s%"

    C'est pas très bien je suppose

    J'ai besoin de votre aide s'il vous plaît. Merci

Discussions similaires

  1. Recherche sans tenir compte des accents ni de la casse
    Par P'tite étoile dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 29/01/2013, 15h42
  2. Réponses: 4
    Dernier message: 12/08/2009, 14h14
  3. Réponses: 1
    Dernier message: 08/06/2009, 11h44
  4. Recherche sans tenir compte des accents
    Par killerjeff dans le forum Access
    Réponses: 6
    Dernier message: 27/01/2007, 10h19
  5. [SQL Server 2005] Recherche sur colonne "Image"
    Par frechy dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 01/09/2006, 18h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo