sql-server - una - tipo de dato uniqueidentifier sql server
SQL Server: conversión de UniqueIdentifier a cadena en una declaración de caso (4)
Aquí es posible usar la función de conversión, pero 36 caracteres son suficientes para mantener el valor único del identificador:
convert(nvarchar(36), requestID) as requestID
Tenemos una tabla de registro que tiene una columna de mensaje que a veces tiene un seguimiento de pila de excepción. Tengo algunos criterios que determinan si el mensaje tiene esto. No queremos mostrarle estos mensajes al cliente, sino que tenemos un mensaje como:
Se produjo un error interno. Póngase en contacto con nosotros con el código de referencia xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
donde xxx, etc. es una columna guía en la tabla. Estoy escribiendo proc almacenado como este:
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
es un tipo de datos Guid en SQL Server y no se convierte en cadena aquí. He visto un código sobre cómo convertir un Guid en una cadena, pero tiene varias líneas y no creo que funcione en una declaración de caso. ¿Algunas ideas?
Creo que encontré la respuesta:
convert(nvarchar(50), RequestID)
Aquí está el enlace donde encontré esta información:
Después de mi opinión, uniquieidentifier / GUID no es un varchar ni un nvarchar sino un char (36). Por lo tanto yo uso
CAST(xyz AS char(36))
En lugar de Str(RequestID)
, intente convert(varchar(38), RequestID)