SQL 에서 정규식을 어떻게 사용해야 하는지 검색을 하다 찾은 방법입니다.
MS-SQL 2005 부터는 닷넷 dll을 등록해서 사용할수 있다고 합니다.

출처 : http://jihyunsama.egloos.com/4601342

우선 닷넷에서 dll을 만듭니다.

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Text.RegularExpressions;
using Microsoft.SqlServer.Server;

namespace UserRegexFunctions
{
    public partial class UserRegex
    {
        public static SqlString RegexMatch(SqlString pattern, SqlString val)
        {
            if (pattern.IsNull || val.IsNull)
                return SqlString.Null;
            else
            {
                string strRet = "";
                Regex rx = new Regex(pattern.Value, RegexOptions.Compiled | RegexOptions.IgnoreCase);
                MatchCollection matches = rx.Matches(val.Value);
                foreach (Match match in matches)
                {
                    strRet += match.Value;
                }
                return new SqlString(strRet);
            }
        }
    }
}

그리고 해당 dll을 DB 서버로 올린 후

DB 서버에서 아래 쿼리를 실행 시킵니다.

--CLR이 가능하도록 CONFIGURE 를 수정 한다.
SET NOCOUNT ON;
USE MASTER;

ALTER database [MASTER] SET TRUSTWORTHY ON; <- 클러스트링 되어 있는 서버에는 해당 DB에 추가한다.

EXEC sp_configure 'clr enabled', 1;
RECONFIGURE;
GO

USE MASTER;
-- DLL을 어셈블리에 등록한다.
CREATE ASSEMBLY UserRegexFunction
FROM 'D:\Project\UserRegexFunctions\UserRegexFunctions\bin\Debug\UserRegexFunctions.dll'
WITH PERMISSION_SET = SAFE;

-- DLL을 사용하는 사용자 정의 함수를 생성한다.
CREATE FUNCTION [dbo].[UserRegexFunction](@Pattern [nvarchar](max), @Val [nvarchar](max))
RETURNS [nvarchar](max) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [UserRegexFunction].[UserRegexFunctions.UserRegex].[RegexMatch];
GO

// 사용자 정의 함수를 사용하여 정규식을 실행한다.
USE MASTER
SELECT dbo.UserRegexFunction(우하하하하하하(t,b+), '\([^)]*\)')

결과 : 우하하하하하하(t,b+) -> 우하하하하하


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

WRITTEN BY
WizCody
WizCody 의 Tistory

트랙백이 하나이고 , 댓글이 없습니다.
secret
'/' 응용 프로그램에 서버 오류가 있습니다.
--------------------------------------------------------------------------------

컴파일 오류
설명: 이 요청을 제공하는 데 필요한 리소스를 컴파일하는 동안 오류가 발생했습니다. 아래의 오류 정보를 확인한 다음 소스 코드를 적절하게 수정하십시오.
컴파일러 오류 메시지: CS0016: 'c:WINNTMicrosoft.NETFrameworkv1.1.4322Temporary ASP.NET Filesroot2135a5088d69a834gdksfxh3.dll' 출력 파일에 쓸 수 없습니다. '액세스가 거부되었습니다.
이런 오류가 나옵니다. 물론 검색을 해봐야지요...
MSDN.. 딸랑 한줄 나옵니다. 반가워야 할 에러가 죽도록 밉습니다.
MS사이트 갑니다. 그래도 해결이 어렵습니다.
이런... 마지막으로 외국의 유명 .NET사이트 검색합니다.
역시~ 해결책 나옵니다. ㅋ
데브피아에서 검색하면 IIS의 응용프로그램 폴의 속성중 ID의 계정을 "로컬시스템"으로 변경하라 합니다.
잘 됩니다.
asp.net사이트에서 검색을 합니다. 닷넷 Framework을 복구 시킵니다. "aspnet_regiis /r"을 합니다.
이것도 잘됩니다. 휴~
참고로... VS.NET씨디 넣고 재설치/복구 해도 안되니 하지 마세요. ㅋ
"검색을 생활화 합시다.~!!"
http://www.taeyo.pe.kr 사이트의 박찬규님의 글을 불펌 하였습니다. ㅡㅡa

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

WRITTEN BY
WizCody
WizCody 의 Tistory

트랙백  3 , 댓글이 없습니다.
secret
{"요청한 작업이 개체의 클래스와 연관된 하나 이상의 제약 조건을 만족하지 않습니다." }
[System.Runtime.InteropServices.COMException]: {System.Runtime.InteropServices.COMException}
System.Object: {System.Runtime.InteropServices.COMException}
_className: null
_COMPlusExceptionCode: -532459699
_exceptionMethod: <정의되지 않은 값>
_exceptionMethodString: null
_helpURL: null
_HResult: -2147016684
_innerException: { }
_message: "요청한 작업이 개체의 클래스와 연관된 하나 이상의 제약 조건을 만족하지 않습니다."
_remoteStackIndex: 0
_remoteStackTraceString: null
_source: null
_stackTrace: {System.Array}
_stackTraceString: null
_xcode: -532459699
_xptrs: 0
HelpLink: null
HResult: -2147016684
InnerException: { }
Message: "요청한 작업이 개체의 클래스와 연관된 하나 이상의 제약 조건을 만족하지 않습니다."
Source: "System.DirectoryServices"
StackTrace: " at System.DirectoryServices.Interop.IAds.SetInfo()rn at System.DirectoryServices.DirectoryEntry.CommitChanges()rn at eHRSync.Sync.ADSync.DoubleDept_Group_IU(DataTable dt) in c:\lotte\source\nets\coutomizition source\ehrsync\sync\adsync.cs:line 977"
TargetSite: {System.Reflection.RuntimeMethodInfo}
=========================================================
위와 같은 에러 메세지가 나왔다....
여러개의 DirectoryEntry 를 생성하다 생긴 오류이다.
오류 발생 사유는 변경하려는 Properties 가 존재하지 않아서 발생하였다.
CommitChanges을 하기전에 변경을 한 Properties 가 있다면 Properties명을 확인해 봐야
할것 같다.

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

WRITTEN BY
WizCody
WizCody 의 Tistory

받은 트랙백이 없고 , 댓글 하나 달렸습니다.
  1. 아 대박 ㅋㅋ
    차장님~ 도움받고 갑니다~
secret



{"연산 오류가 발생했습니다" }
[System.Runtime.InteropServices.COMException]: {System.Runtime.InteropServices.COMException}
System.Object: {System.Runtime.InteropServices.COMException}
_className: null
_COMPlusExceptionCode: -532459699
_exceptionMethod: <정의되지 않은 값>
_exceptionMethodString: null
_helpURL: null
_HResult: -2147016672
_innerException: { }
_message: "연산 오류가 발생했습니다"
_remoteStackIndex: 0
_remoteStackTraceString: null
_source: null
_stackTrace: {System.Array}
_stackTraceString: null
_xcode: -532459699
_xptrs: 0
HelpLink: null
HResult: -2147016672
InnerException: { }
Message: "연산 오류가 발생했습니다"
Source: "System.DirectoryServices"
StackTrace: " at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)rn at System.DirectoryServices.DirectoryEntry.Exists(String path)rn at CreateGroup.ADCreate.CreateDeptGroup() in c:\lotte\source\nets\coutomizition source\creategroup\adcreate.cs:line 54"
TargetSite: {System.Reflection.RuntimeMethodInfo}
AD 사용 개발중 발생하는 에러중 하나이다.
DirectoryEntry.Exists 명령어를 사용할때 발생하였다.
◇ 대처방법 ◇
1. 텔넷 접속이 가능한지 확인한다.
c: > telnet [대상 IP] 389
2. 개발 PC가 AD 도메인컨트롤에 가입되어있는지 확인한다.
같은 도메인으로 개발PC를 로그온해야한다.
도메인 권한으로 인한 문제인것 같다.
개발 PC를 AD가 설치되어 있는 도메인에 등록을하고
AD 로그인 계정으로 로그온을 하니 에러가 발생하지 않았다.

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

WRITTEN BY
WizCody
WizCody 의 Tistory

받은 트랙백이 없고 , 댓글이 없습니다.
secret
All the patterns:
MM/dd/yyyy 10/25/2007
dddd, dd MMMM yyyy Thursday, 25 October 2007
dddd, dd MMMM yyyy HH:mm Thursday, 25 October 2007 00:49
dddd, dd MMMM yyyy hh:mm tt Thursday, 25 October 2007 12:49 AM
dddd, dd MMMM yyyy H:mm Thursday, 25 October 2007 0:49
dddd, dd MMMM yyyy h:mm tt Thursday, 25 October 2007 12:49 AM
dddd, dd MMMM yyyy HH:mm:ss Thursday, 25 October 2007 00:49:38
MM/dd/yyyy HH:mm 10/25/2007 00:49
MM/dd/yyyy hh:mm tt 10/25/2007 12:49 AM
MM/dd/yyyy H:mm 10/25/2007 0:49
MM/dd/yyyy h:mm tt 10/25/2007 12:49 AM
MM/dd/yyyy HH:mm:ss 10/25/2007 00:49:38
MMMM dd October 25
MMMM dd October 25
yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK 2007-10-25T00:49:38.0395323-04:00
yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK 2007-10-25T00:49:38.0395323-04:00
ddd, dd MMM yyyy HH':'mm':'ss 'GMT' Thu, 25 Oct 2007 00:49:38 GMT
ddd, dd MMM yyyy HH':'mm':'ss 'GMT' Thu, 25 Oct 2007 00:49:38 GMT
yyyy'-'MM'-'dd'T'HH':'mm':'ss 2007-10-25T00:49:38
HH:mm 00:49
hh:mm tt 12:49 AM
H:mm 0:49
h:mm tt 12:49 AM
HH:mm:ss 00:49:38
yyyy'-'MM'-'dd HH':'mm':'ss'Z' 2007-10-25 00:49:38Z
dddd, dd MMMM yyyy HH:mm:ss Thursday, 25 October 2007 00:49:38
yyyy MMMM 2007 October
yyyy MMMM 2007 October

The patterns for DateTime.ToString ( 'd' ) :
MM/dd/yyyy 10/25/2007

The patterns for DateTime.ToString ( 'D' ) :
dddd, dd MMMM yyyy Thursday, 25 October 2007

The patterns for DateTime.ToString ( 'f' ) :
dddd, dd MMMM yyyy HH:mm Thursday, 25 October 2007 00:49
dddd, dd MMMM yyyy hh:mm tt Thursday, 25 October 2007 12:49 AM
dddd, dd MMMM yyyy H:mm Thursday, 25 October 2007 0:49
dddd, dd MMMM yyyy h:mm tt Thursday, 25 October 2007 12:49 AM


The patterns for DateTime.ToString ( 'F' ) :
dddd, dd MMMM yyyy HH:mm:ss Thursday, 25 October 2007 00:49:38


The patterns for DateTime.ToString ( 'g' ) :
MM/dd/yyyy HH:mm 10/25/2007 00:49
MM/dd/yyyy hh:mm tt 10/25/2007 12:49 AM
MM/dd/yyyy H:mm 10/25/2007 0:49
MM/dd/yyyy h:mm tt 10/25/2007 12:49 AM


The patterns for DateTime.ToString ( 'G' ) :
MM/dd/yyyy HH:mm:ss 10/25/2007 00:49:38


The patterns for DateTime.ToString ( 'm' ) :
MMMM dd October 25


The patterns for DateTime.ToString ( 'r' ) :
ddd, dd MMM yyyy HH':'mm':'ss 'GMT' Thu, 25 Oct 2007 00:49:38 GMT


The patterns for DateTime.ToString ( 's' ) :
yyyy'-'MM'-'dd'T'HH':'mm':'ss 2007-10-25T00:49:38


The patterns for DateTime.ToString ( 'u' ) :
yyyy'-'MM'-'dd HH':'mm':'ss'Z' 2007-10-25 00:49:38Z


The patterns for DateTime.ToString ( 'U' ) :
dddd, dd MMMM yyyy HH:mm:ss Thursday, 25 October 2007 00:49:38


The patterns for DateTime.ToString ( 'y' ) :
yyyy MMMM 2007 October
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

WRITTEN BY
WizCody
WizCody 의 Tistory

받은 트랙백이 없고 , 댓글이 없습니다.
secret