2014-04-01 4 views
0

아래 스크립트에서는 str_replace(rtrim(c_manager),'''','_')이 작동하지 않는 것 같습니다. 내 인수에 작은 따옴표를 밑줄로 바꾸고 싶습니다. 예를 들어 :perl 스크립트의 str_replace 구문

Input: `S'achin` 
Result: `S_achin` 

$sql = 'select rtrim(f_admin_disabled),'."\n". 
     '  convert(varchar,t_password,101),'."\n". 
     '  rtrim(c_email),'."\n". 
     '  str_replace(rtrim(c_manager),'''','_'),'."\n". 
     '  rtrim(c_mgr_email)'."\n". 
     ' from tuserprofile'."\n". 
     ' where ic_user1 = '."'$user_id'"."\n"; 

답변

2

문자열

$string=~s/'/_/g; 

구문

$string=~s/<string>/<replace_string>/g; 
+1

을 ' 따옴표를 이스케이프하고 'i'한정자를 가질 필요가 없습니다. – Toto

+0

@ M42 : 고맙습니다. – Balakumar

+0

위 select 문에서 어떻게 사용합니까? – user977802

0

사용이 서브 루틴에 문자를 대체합니다.

sub str_replace { 
    my ($s) = @_; 

    $s =~ s/'/_/g; 

    return $s; 
} 
3

당신은 당신이 그들을 탈출하거나 필요 str_replace(rtrim(c_manager),'''','_'), 생산하는 단일 인용 문자열에 작은 따옴표를 원한다면 :

'  str_replace(rtrim(c_manager),\'\'\'\',\'_\'),' 

을하거나 다른 구분 기호 사용이

q!  str_replace(rtrim(c_manager),'''','_'),! 
관련 문제