SQL Server: UniqueIdentifier를 케이스 스테이트먼트 문자열로 변환
로그 테이블에는 예외 스택트레이스가 있는 경우가 있는 메시지컬럼이 있어요메시지에 이 내용이 포함되어 있는지 여부를 판단하는 기준이 있습니다.고객에게 이러한 메시지를 표시하는 것이 아니라 다음과 같은 메시지를 전달하고 싶습니다.
내부 오류가 발생했습니다.참조 코드 xxxxxx-xxx-xxxx-xxxx-xxxxxxxxxxxxxxxxxxxxxxx
여기서 xxx 등은 테이블의 GUID 컬럼입니다.stored proc를 다음과 같이 쓰고 있습니다.
declare @exceptionCriteria nvarchar(50)
select @exceptionCriteria = '%<enter criteria etc>%'
select LogDate,
case
when Message like @exceptionCriteria
then 'Internal Error Occured. Reference Code: ' + str(RequestID)
else Message
end
from UpdateQueue
RequestID
는 SQL Server의 GUID 데이터 유형이며 여기서는 문자열로 변환하지 않습니다.GUID를 문자열로 변환하는 방법에 대한 몇 가지 코드를 보았습니다만, 여러 줄의 GUID가 있기 때문에 케이스 스테이트먼트에서는 사용할 수 없다고 생각합니다.좋은 생각 있어요?
답을 찾은 것 같아
convert(nvarchar(36), RequestID)
다음 링크에서 다음 정보를 찾을 수 있습니다.
http://msdn.microsoft.com/en-us/library/ms187928.aspx
여기서 변환 함수를 사용할 수 있지만 고유 식별자 값을 유지하려면 36자로 충분합니다.
convert(nvarchar(36), requestID) as requestID
편집: 네, 댓글에 기재되어 있듯이 char 또는 nchar 또는 ASCII 문자 테이블을 적절히 조작할 수 있는 함수가 유효합니다.그래서 저는 보통 다국어/다자릿 환경에서 일하고 있고, 항상 nvarchar를 사용하는 것이 원칙입니다.그게 내 쉬운 방법이야, 미안해.또한 조만간 데이터베이스 소프트웨어에서 ASCII 이외의 요소를 가진 고유 식별자를 생성하기 시작하면 준비가 완료됩니다.
제 생각에는uniqueidentifier
/ GUID는 어느 쪽도 아닙니다.varchar
어느 쪽도nvarchar
단,char(36)
따라서 다음을 사용합니다.
CAST(xyz AS char(36))
대신Str(RequestID)
,해라convert(varchar(38), RequestID)
언급URL : https://stackoverflow.com/questions/6299918/sql-server-converting-uniqueidentifier-to-string-in-a-case-statement
'source' 카테고리의 다른 글
T-SQL: 중복된 행은 모두 삭제하지만 행은 유지 (0) | 2023.04.07 |
---|---|
SQL Server 2005 고유 제약 조건 작성 방법 (0) | 2023.04.07 |
sql 문에서 대괄호 []를 사용하는 이유는 무엇입니까? (0) | 2023.04.07 |
SQL Server의 select 문에 TOP가 있는 변수를 동적으로 만들지 않고 사용 (0) | 2023.04.07 |
SQL Server에서 Forech를 쓰는 방법 (0) | 2023.04.07 |