2010-05-20 26 views
1

Je voudrais couper tous les caractères spéciaux d'une chaîne en SQL. J'ai vu un tas de personnes qui utilisent des méthodes de sous-chaîne pour supprimer une certaine quantité de caractères, mais dans ce cas, la longueur de chaque côté de la chaîne est inconnue.Comment est-ce que je peux couper certains caractères d'une chaîne en sql?

Quelqu'un sait-il comment faire?

+0

Quelle base de données? –

+0

Je vois d'après votre autre commentaire que ce n'est pas * ce dont vous avez besoin. Si vous dites quelle version de SQL vous utilisez, je peux vous donner une meilleure réponse. – egrunin

Répondre

1

utilisez la fonction replace vous aidera

je veux dire quand vous voulez supprimer caractère spécial remplacer cet espace » 'en utilisant remplacer la fonction

plus sur le remplacer: http://technet.microsoft.com/en-us/library/ms186862.aspx

+0

Remplacer ne va pas faire une coupe. Que se passe-t-il si j'ai quelque chose comme ... #! $ # @ $ #! @ Bonjour, World @! $> Matt

+0

oui vous avez raison dans ce cas mais pour cela vous avez besoin de fonction comme sous-chaîne avec indexof. –

1

Dans MS SQL, cela supprimera tous les signes plus:

SELECT REPLACE(theField, '+', '') FROM theTable 

Est-ce le genre de chose dont tu as besoin?

0
USE [YourDataBase] 
GO 
/****** Object: UserDefinedFunction [Accounts].[fn_CurrentFeeorArrears] Script Date: 02/18/2014 12:54:15 ******/ 
/*****Developed By rameez****/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE FUNCTION [FN_REMOVE_SPECIAL_CHARACTER] 
( 
@INPUT_STRING varchar(300)) 
RETURNS VARCHAR(300) 
AS 
BEGIN 

--declare @testString varchar(100), 
DECLARE @NEWSTRING VARCHAR(100) 
-- set @teststring = '@ram?eez(ali)' 
SET @NEWSTRING = @INPUT_STRING ; 
With SPECIAL_CHARACTER as 
(
--SELECT '>' as item 
--UNION ALL 
--SELECT '<' as item 
--UNION ALL 
--SELECT '(' as item 
--UNION ALL 
--SELECT ')' as item 
--UNION ALL 
--SELECT '!' as item 
--UNION ALL 
--SELECT '?' as item 
--UNION ALL 
--SELECT '@' as item 
--UNION ALL 
--SELECT '*' as item 
--UNION ALL 
--SELECT '%' as item 
--UNION ALL 
SELECT '$' as item 
) 
SELECT @NEWSTRING = Replace(@NEWSTRING, ITEM, '') FROM SPECIAL_CHARACTER 
return @NEWSTRING 
END 
select dbo.[FN_REMOVE_SPECIAL_CHARACTER] ('[email protected]') 
0

j'ai écrit cette fonction pour couper toute GAUCHE omble chevalier

CREATE FUNCTION TRIMCHAR 
(
    -- Add the parameters for the function here 
    @str varchar(200) , @chartotrim varchar(1) 
) 
RETURNS varchar(200) 
AS 
BEGIN 



DECLARE @temp varchar(2000) 

SET @temp = @str 

WHILE CHARINDEX ( @chartotrim , @temp) =1 
BEGIN 


SET @temp = RIGHT(@temp , LEN(@temp)-1) 

END 


RETURN @temp 

END 
GO