답변
SQL Server 2000 (및 다른 32 비트 버전의 SQL Server)의 경우 xp_pcre이 있으며 확장 저장 프로 시저 세트로 Perl 호환 정규식이 도입되었습니다. 나는 그것을 사용했습니다.
최신 버전을 사용하면 .NET integrated regular expressions에 직접 액세스 할 수 있습니다 (이 링크는 죽어있는 것 같습니다. 다른 하나는 MSDN: How to: Work with CLR Database Objects입니다).
대답은 일반적인 경우가 아니지만 효율적이라는 말에 달려 있습니다. 이러한 목적을 위해 다음 정의를 사용합니다. '인덱스와 조인을 합리적인 순서로 효과적으로 사용합니다.'
이 경우 '효율적인'쿼리는 '인수'가 가능하므로 인덱스 검색을 사용하여 검색 조건자를 좁힐 수 있습니다. 등가성 (t-join)과 간단한 불평등이이를 가능하게합니다. 'AND'술어도이를 수행 할 수 있습니다. 그런 다음 테이블, 인덱스 및 범위 검색 (레코드 별 레코드 (또는 인덱스 키 비 인덱스 키) 비교) 작업을 수행합니다.
Sontek의 대답은 regexp 기능을 쿼리에 인라인하는 방법을 설명하지만 작업은 레코드별로 레코드를 비교해야합니다. 함수에서이 함수를 감싸면 함수의 인덱스가 계산 결과가 인덱스에서 구체화됩니다 (오라클은 이것을 지원하고 in this article과 같은 종류의 트릭을 사용하여 SQL Server에서 동일한 기능을 수행 할 수 있습니다). 그러나 임의의 정규 표현식에 대해서는이 작업을 수행 할 수 없습니다.
일반적으로 정규 표현식의 의미는 인덱스가 수행하는 방식으로 일치 집합을 제거하지 않으므로 rexegp 지원을 쿼리 최적화 프로그램에 통합하는 것은 아마도 불가능합니다.
는 우리가 Microsoft는이를 추가 할 경우 당신이 할 수있는 경우 SQL CLR 어셈블리
의 형태로 올 것이라고 SQL 서버 2008 (HIERARCHYID, 지리 공간)의 새로운 유형에서 볼 수 있다고 생각 Visual Studio에서 새로운 Database \ SQL Server 프로젝트를 생성하여 자신 만의 롤을 만들 수있는 데이터베이스에 어셈블리를 설치하십시오. 그러면 새로운 Trigger/UDF/Stored Proc/Aggregate 또는 UDT를 만들 수 있습니다. System.Text.RegularExpressions을 클래스로 가져 와서 거기에서 이동할 수 있습니다.
희망이
나는 기본적으로 임시 쿼리에 대한 SQL 서버에서 정규 표현식을 호출하고 저장 프로 시저에서 사용할 수있는 능력을 가지고 사랑을하는 데 도움이됩니다. 우리의 DBA는 CLR 함수를 만들 수 없도록하여 LINQ Pad을 임시 항목에 대한 가난한 사람의 쿼리 편집기로 사용했습니다. 특히 데이터베이스에 저장된 JSON 또는 XML과 같은 구조화 된 데이터로 작업 할 때 유용합니다.
그리고 정규 표현식 지원이 없다는 점에 동의합니다. 이는 쿼리 언어에서 명백한 기능처럼 보입니다. 바라건대 우리는 장래 버전에서 그것을 볼 것이지만 사람들은 오랜 시간 동안 그것을 요구해 왔으며 아직 제품으로 나아 가지 못했다.
필자가 보아온 가장 흔한 이유는 잘못 형성된 표현으로 인해 catastrophic backtracking이 발생하고 .NET에서는이를 중단하지 않고 거의 항상 컴퓨터를 다시 시작해야한다는 것입니다. 일단 프레임 워크에서 SQL Server의 차후 버전에 포함될 것임을 알게 될 것입니다.
- 1. SQL Server 정규식 kleene star
- 2. 연결된 서버의 SQL Server 버전 확인
- 3. 웹 서버의 SQL Server에서 로컬 SQL Server Express 인스턴스로 복사
- 4. SQL 서버의 루프 유형?
- 5. SQL 서버의 통계 계산
- 6. SQL 서버의 열 변경
- 7. SQL Server 2005 on SQL Server 2000
- 8. SQL 서버의 동적 SQL 조인
- 9. SQL 서버의 시간대 고려 사항
- 10. 원격 서버의 SQL 연결 오류
- 11. SQL Server - 연결된 서버의 테이블 스키마를보기 위해 열어야하는 권한
- 12. 단일 서버의 모든 SQL Server 연결 서버 삭제
- 13. 다른 서버의 쿼리를 사용하는 SQL Server 데이터 가져 오기 마법사
- 14. SQL Server : 서버의 모든 데이터베이스에 대한 쿼리 데이터베이스 사용자 역할
- 15. SQL 서버의 트리거 테이블
- 16. SQL 서버의 트리거 전에
- 17. SQL 서버의 임시 테이블
- 18. SQL 서버의 간단한 계산
- 19. SQL 서버의 날짜 비교
- 20. SQL 서버의 트리거
- 21. SQL 서버의 테이블 조각화
- 22. SQL 서버의 조건 필터링
- 23. SQL 서버의 중첩 트랜잭션
- 24. SQL 서버의 인덱스
- 25. SQL 서버의 매핑 결과
- 26. SQL 서버의 구문 오류
- 27. SQL 서버의 syncobj는 무엇입니까
- 28. SQL 서버의 인덱싱 문제
- 29. SQL 서버의 메모리 관리
- 30. SQL 서버의 RTF to TEXT
이것은 추측과 논평이며 대답이 아닙니다. – amoss