programing

SQL Server에서 작은 따옴표 바꾸기

batch 2023. 7. 15. 09:57
반응형

SQL Server에서 작은 따옴표 바꾸기

SQL Server에서 단일 따옴표를 대체하는 이 기능이 있습니다.

그러나 하나의 인용문을 삽입하면 오류가 발생합니다.Replace(@strip,''','')):

Create Function [dbo].[fn_stripsingleQuote]
    (@strStrip varchar(Max))
    returns varchar
as
begin
    declare @CleanString varchar(Max)
    SET @var=(Replace(@strip,'',''))

    return @var
end

다음과 같이 단일 따옴표를 두 배로 묶어야 합니다.

REPLACE(@strip, '''', '')

해라REPLACE(@strip,'''','')

SQL따옴표 두 개를 사용하여 문자열에서 하나를 나타냅니다.

단일 따옴표를 완전히 제거해야 하는 경우 다음 작업을 수행할 수 있습니다.

Replace(@strip, '''', '')

그러나 일반적으로 데이터베이스를 쿼리할 때 SQL Server를 "로 대체합니다.기본 제공되는 SQL 함수(예: 대체)의 장점은 단일 따옴표를 두 배로 늘려야 한다는 것입니다.

코드에서 '를 '로 대체하려면 다음을 수행합니다.

Replace(@strip, '''', '''''')

물론...일부 상황에서는 데이터베이스를 쿼리할 때 매개 변수를 사용할 경우 이 작업을 완전히 수행하지 않아도 됩니다..NET 응용 프로그램에서 데이터베이스를 쿼리한다고 가정하면 SqlParameter 클래스를 사용하여 쿼리에 대한 SqlCommand 매개 변수를 입력하면 이 단일 견적 비즈니스가 자동으로 처리됩니다.SQL 매개 변수도 SQL 주입 공격을 방지하는 데 도움이 되므로 일반적으로 이 방법을 사용하는 것이 좋습니다.

char(39)를 사용할 수 있습니다.

insert into my_table values('hi, my name'+char(39)+'s tim.')

또는 이 경우:

Replace(@strip,char(39),'')

쿼트네임 기능을 복제하려고 하는 것 같습니다.이 내장 함수는 문자열 내부에 구분 기호를 추가하고 구분 기호를 적절하게 이스케이프하는 데 사용할 수 있으며 두 개의 단일 구분 기호를 모두 인식합니다.'두 배로"구분 기호로 따옴표, 대괄호[그리고.].

하나의 따옴표를 사용하여 하나의 따옴표를 이스케이프해 보십시오.

Replace(@strip, '''', '')

우리는 견적서의 수를 두 배로 늘려야 합니다.

단일 따옴표를 대체하는 방법:

REPLACE(@strip, '''', '')

큰따옴표를 대체하는 방법

REPLACE(@strip, '''''', '')

최근 REPLACE() 쿼리 중 하나에서 수행하지 않은 것처럼 단일 따옴표를 사용하여 단일 따옴표를 이스케이프해도 작동하지 않는 경우 쿼리 전에 SET QUQED_IDIFIER OFF를 사용한 다음 SET QUQED_IDIFIER ON을 사용할 수 있습니다.

예를들면

SET QUOTED_IDENTIFIER OFF;

UPDATE TABLE SET NAME = REPLACE(NAME, "'S", "S");

SET QUOTED_IDENTIFIER OFF;

저는 여기에 적용될 이상한 이상 현상에 부딪혔습니다.Google API를 사용하여 XML 형식으로 응답을 얻었을 때, 작은 따옴표 때문에 XML 데이터 형식으로 변환하지 못했습니다.

대체(@Strip, ''',''')

단일 따옴표가 39가 아닌 146 문자였기 때문에 작동하지 않았습니다.그래서 저는 다음을 사용했습니다.

대체(@Strip, char(146), ')'

이는 일반적인 단일 따옴표 char(39) 및 기타 특수 문자에도 작동합니다.

사용해 보십시오.

select replace (colname, char(39)+char(39), '') AS colname FROM .[dbo].[Db Name];

저는 원하는 결과를 얻었습니다.예: 입력 값 --> '%Pat'처럼) '''OR

      Want Output -->  *Like '%Pat') OR*

위의 쿼리를 사용하여 원하는 결과를 얻었습니다.

SQL 문이 데이터베이스에 도달하기 전에 사용자 입력(입력 위생)에서 단일 따옴표를 스트라이핑/교체/스케일링해야 합니다.

큰따옴표를 사용하여 따옴표를 이스케이프해야 할 뿐만 아니라 변수 이름도 혼동했습니다.당신은 @CleanString과 @strStrip 대신 @var와 @strip을 사용하고 있습니다.

이에 대한 가장 짧은 SQL 문은 다음과(와)

CREATE FUNCTION [dbo].[fn_stripsingleQuote] (@strStrip varchar(Max))
    RETURNS varchar(Max)
AS
BEGIN    
    RETURN (Replace(@strStrip ,'''',''))
END

이것이 도움이 되길 바랍니다!

replace (colname, '', '') AS colname FROM [dbo]를 선택합니다.[Db 이름]

언급URL : https://stackoverflow.com/questions/1440733/replace-single-quotes-in-sql-server

반응형