我有一個表,它將 AD 用戶的資料存盤在 abc\sam、abc\bill、xyz\Ramos 等列中。(域\用戶名)
我正在嘗試使用選擇查詢來修剪 \ 之后的任何內容,然后只給我他們的位置的域。也就是說,在修剪 abc 后,例如回傳 NorthEast,xyz 回傳 SouthPacfic 等。
請建議我如何為此撰寫 SQL 查詢
uj5u.com熱心網友回復:
您可以使用SUBSTRING來構建您的子字串并CHARINDEX找到
反斜杠的位置:
SELECT SUBSTRING(column, CHARINDEX('\', column) 1, LEN(column)) FROM yourtable;
uj5u.com熱心網友回復:
你的資料
create table test (c1 varchar(max));
insert into test values
('abc\sam'),
('abc\bill'),
('xyz\Ramos' );
您可以使用以下查詢來獲得所需的結果,使用CHARINDEXandLEFT和RIGHT函式
select
LEFT(c1, CHARINDEX('\', c1) - 1) location
--,RIGHT(c1, CHARINDEX('\', c1) - 1) username
FROM Test
使用CHARINDEX和SUBSTRING 功能
select
SUBSTRING (c1,0,CHARINDEX('\',c1)) location
--,SUBSTRING(c1,CHARINDEX('\',c1) 1,LEN(c1)) username
FROM Test
使用PARSENAME函式。但是此方法不能與三個以上的\
like(abc\sam\eee\fff)一起使用
Select
PARSENAME(replace(c1,'\','.'),2) location
--,parsename(replace(c1,'\','.'),1) username
FROM Test
小提琴手
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/479908.html
