una texto separar por numero hora fecha falló error delimitada convertir conversión comas columnas caracteres cadena sql-server sql-server-2005 uniqueidentifier

sql server - texto - Convertir NULL en cadena vacía: la conversión falló al convertir una cadena de caracteres a un identificador único



separar cadena delimitada por comas en sql server (3)

Usando SQL Server 2005, ¿cómo obtengo la siguiente declaración o, más bien, la salida como quiero que sea?

SELECT Id ''PatientId'', ISNULL(ParentId,'''') ''ParentId'' FROM Patients

ParenId es un uniqueidentifier que permite NULL , pero parece que el optimizador de consultas intenta volver a uniqueidentifier a uniqueidentifier para las filas donde ParentId = NULL . Como dice el título, ¡esa es la información exacta del error que el corredor de consultas lanza a mi cara!

  • ¿Cómo consigo que el servidor devuelva una cadena vacía para ParentId = NULL

ParentId CAST el ParentId como nvarchar , para que la salida sea siempre el mismo tipo de datos.

SELECT Id ''PatientId'', ISNULL(CAST(ParentId as nvarchar(100)),'''') ''ParentId'' FROM Patients


SELECT Id ''PatientId'', ISNULL(CONVERT(varchar(50),ParentId),'''') ''ParentId'' FROM Patients

ISNULL siempre intenta devolver un resultado que tenga el mismo tipo de datos que el tipo de su primer argumento. Entonces, si quieres que el resultado sea una cadena ( varchar ), asegúrate de que ese sea el tipo del primer argumento.

COALESCE suele ser una función mejor que ISNULL , ya que considera todos los tipos de datos de argumentos y aplica las reglas de precedence apropiadas para determinar el tipo de datos resultante final. Desafortunadamente, en este caso, el uniqueidentifier tiene mayor prioridad que varchar , por lo que no ayuda.

(También es generalmente preferido porque se extiende a más de dos argumentos)


Select ID, IsNull(Cast(ParentID as varchar(max)),'''') from Patients

Esto es necesario porque el campo ParentID no es de tipo varchar / nvarchar. Esto hará el truco:

Select ID, IsNull(ParentID,'''') from Patients