2010-05-20 5 views
1

Я хотел бы обрезать все специальные символы из строки в SQL. Я видел группу людей, которые используют методы подстроки для удаления определенного количества символов, но в этом случае длина с каждой стороны строки неизвестна.Как можно обрезать некоторые символы из строки в sql?

Кто-нибудь знает, как это сделать?

+0

Какой базы данных? –

+0

Я вижу из вашего другого комментария, что это * не *, что вам нужно. Если вы скажете, какую версию SQL вы используете, я могу дать вам лучший ответ. – egrunin

ответ

1

использование replace функция поможет вам

я хочу сказать, если вы хотите удалить специальный символ заменить это пространство» 'с помощью функции замены

больше о замене: http://technet.microsoft.com/en-us/library/ms186862.aspx

+0

Заменить не собирается. Что произойдет, если у меня есть что-то вроде ... #! $ # @ $ #! @ Hello, World @! $> Matt

+0

Да, вы правы в этом случае, но для этого вам нужна функция, например, sub string с индексом. –

1

В MS SQL, это удалит все знаки плюс:

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

Это что-то вроде что вам нужно?

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

Я написал эту функцию для ЛЕВЫХ обрезков любого символа

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 
Смежные вопросы