2017-02-23 1 views
0

하드 코드 값이있는 "scenarioID"가 포함 된 데이터베이스의 개체를 식별해야합니다. 나는 다음과 같은 경우를 식별하기 위해 찾고SQL Server에서 하드 코딩 된 값 찾기

:

  1. scenarioId = XX (두 자리 값)
  2. scenarioId = XX (두 자리 값)
  3. scenarioId = XX (두 자리 값)

아래의 쿼리는 "scenarioid"가 포함 된 개체를 가져 오는 것으로 보이지만 위의 경우 이상을 제공합니다.

SELECT DISTINCT a.[name] 
FROM sysobjects a 
INNER JOIN syscomments b on a.id = b.id 
WHERE b.[text] LIKE '%scenarioId = __[^0-9]%' 
+1

테스트 할 데이터를 추가하고 잘못된 오 검출의 예를 추가 할 수 있습니까? – iamdave

답변

0

나는 내 실수를 깨달았다. [0-9]를 사용하는 대신 [^ 0-9]을 사용했습니다.

SELECT DISTINCT a.[name] 
FROM sysobjects a 
INNER JOIN syscomments b on a.id = b.id 
WHERE b.[text] LIKE '%scenarioId = [0-9][0-9]%' 
or b.[text] like '%scenarioId=[0-9][0-9]%' 
or b.[text] like '%scenarioId =[0-9][0-9]%' 
or b.[text] like '%scenarioId = [0-9][0-9]%' 
or b.[text] like '%scenarioId = [0-9][0-9]%' 
+1

당신은 B의 공백을 제거하여 당신에게 코드를 단순화 할 수있다.이 같은 [텍스트] ... 는 구별되는. [이름]을 선택 INNER가 한 syscomments B 가입을 sysobjects FROM 을 a.id = b.id 에 교체 WHERE (b. [텍스트], '', '') LIKE '% scenarioId = [0-9] [0-9] %' – nscheaffer

관련 문제