2014-04-21 7 views
2

내 사이트에서 매우 성가시다. 다음 문제를 해결하려고합니다. , 하이 라이터는 생각 https://code.google.com/p/google-code-prettify/source/browse/trunk/src/lang-sql.js?r=179Google Code Prettify - SQL 이스케이프 문자 수정 방법

문제는 SQL에서

  1. 때이 "\"로 끝나는 문자열을 만드는 것입니다 : https://code.google.com/p/google-code-prettify/issues/detail?id=341&thanks=341&ts=1398085413

    와는 싸게 치장 다음 코드 파일을 참조 이것은 T-SQL 구문이 아니지만 이스케이프 처리됩니다. 재생하려면

  2. 은, 소스 코드이 코드를 사용합니다 (Google 코드 싸게 치장에 설치) 내가 코드를 이해하는 기대

    <pre class="prettyprint lang-sql"> 
    SELECT @BUPath = 'c:\backups\' + @DBName + '-B4 CHANGE.bak' 
    SELECT @BUName = @DBName + '-B4 CHANGE' 
    </pre> 
    

을 그 C '부분에 인용하기 전에 슬래시 : \ 백업 \ '내가이 줄을 변경해야 할 것이라고 기대하고 도피 문자 ...

가 아닌,하지만 확실하지 않다 방법 :

[PR['PR_STRING'],  /^(?:"(?:[^\"\\]|\\.)*"|'(?:[^\'\\]|\\.)*')/, null, 
     '"\''] 
,

문제를 보여주는 피들 : http://jsfiddle.net/JH5uj/5/

답변

2

https://github.com/google/code-prettify/blob/master/src/lang-sql.js의 PR_STRING 정의가 백 슬래시가 이스케이프 문자 인 곳의 다른 언어에서 복사 된 것으로 생각됩니다.

/^(?:"[^"]*"|'[^']*')/ 

제가 말할 수있는 한 그것을하지만, 뭔가를 놓칠 수있는 단순한 데이터베이스 사람입니다.

(이와 파티에 늦게해서 미안하지만, 난 그냥 같은 문제에 충돌이 스레드를 발견했다.)

+0

들으 사람이 실제로 속임수를 썼는지! 고맙다! – AlexT82

+0

SQL Server의 문자열 리터럴에 큰 따옴표가 사용됩니까? Oracle에서 "xyz"는 문자열이 아니라 식별자입니다. 그렇지 않다면 그냥/^ '[^'] * '/ –

+0

입니다. 나는 큰 따옴표도 잃어 버릴 수 있습니다. https://msdn.microsoft.com/en-us/library/ms179899.aspx –