¿Cómo analizar datos en SQL Server 2008?
Frecuentes
Visto 8,888 veces
0
Tengo un nombre de columna llamado Nombre de usuario en mi tabla en SQL Server 2008. El nombre de usuario tiene los siguientes datos
Username
corp\abc
corp\petern
corp\timw
y así
Necesito que mi nombre de usuario sea
Username
abc
petern
timw
¿Cómo analizo los datos en Nombre de usuario para omitir corp\?
Gracias.
4 Respuestas
3
Podrías usar NOMBRE DE PARSE para dividir los datos pero la función usa punto (.
) como delimitador. Por lo tanto, primero debe reemplazar las barras inclinadas hacia atrás (\
) con punto o punto (.
).
Haga clic aquí para ver la demostración en SQL Fiddle.
Guión:
CREATE TABLE users
(
username VARCHAR(30) NOT NULL
);
INSERT INTO users (username) VALUES
('corp\abc'),
('corp\corporate\'),
('corp\yescorp'),
('corp\def'),
('\corpabc\'),
('corpabc\');
SELECT username
, PARSENAME(REPLACE(username, '\', '.'), 1) AS usernameonly
FROM users;
Salida:
USERNAME USERNAMEONLY
----------------- ------------
corp\abc abc
corp\corporate\
corp\yescorp yescorp
corp\def def
\corpabc\
corpabc\
contestado el 03 de mayo de 12 a las 15:05
1
Puede usar la siguiente expresión para extraer el nombre de usuario:
select substring (username, charindex ('\', username, 1) + 1, len(username))
Si no hay una barra invertida en la función de nombre de usuario, devolverá el nombre de usuario completo; es práctico si combina el servidor sql y la autenticación de Windows.
contestado el 03 de mayo de 12 a las 15:05
0
Update dbo.Users
Set Username = replace(Username, 'corp\\', '');
Verifique la cita de antemano, verificando primero si los resultados de select parecen correctos (en general, es una buena práctica con las declaraciones de actualización de datos):
select replace(Username, 'corp\\', '') from dbo.Users
contestado el 03 de mayo de 12 a las 15:05
0
Puede obtener el nombre de usuario de esta manera:
SELECT RIGHT('corp\username',LEN('corp\username')-PATINDEX('%\%','corp\username'))
=>
SELECT RIGHT(username,LEN(username)-PATINDEX('%\%',username))
Este trabajo en texto, nvarchar(n - max)
contestado el 03 de mayo de 12 a las 15:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas sql-server sql-server-2008 tsql or haz tu propia pregunta.