我有以下運動:SQL-服務器CONCAT情況
連擊第一,中間,姓和名的後綴,形成 客戶在以下格式名稱:[中間名]姓 姓氏[,後綴]。請注意,應該省略NULL值。
我將此解釋爲以下情形(從圖像中創建表並插入一些值):
請在下面找到我的樣本數據,名稱是#TB_Customer 列客戶名稱是預期的結果,應該是形式
FirstName MiddleName.LastName, Suffix
的,如果我有所有 領域enteries。中間名和後綴可以是可選的,所以情況是:
如果有
suffix
但不是MiddleName
然後CustomerName
應該是形式Firstname LastName,Suffix
的如果有一個
MiddleName
但不是suffix
那麼CustomerName
應該是FirstName MiddleName.LastName
如果兩個
MiddleName
和Suffix
爲空,然後CustomerName
應該 是形式的FirstName LastName)
但你可以看到客戶名稱的情況下查詢我寫的沒有按沒有按預期工作(請參閱上面的帶子彈的cases
)
我寫信得到CustomerName
列的查詢是:
SELECT
(case
when (MiddleName is not null and Suffix is not null) then
CONCAT(c.FIRSTNAME,' ', c.MiddleName,'.', c.LASTNAME, ', ',Suffix)
when (MiddleName is null and suffix is null) then
CONCAT(c.FIRSTNAME,' ' ,c.LASTNAME)
when (MiddleName is null and Suffix is not null)then
concat (c.FirstName, ' ', c.LastName, ', ',Suffix)
when (Suffix is null and MiddleName is not null) then
concat (c.FirstName, ' ',MiddleName,'.',LastName)
end
)AS CustomerName
,c.*
FROM #TB_Customer c;
我有2個問題:
- 我才明白鍛鍊和做我有一個很好的邏輯是什麼?
- 我在哪裏犯了一個錯誤,什麼是正確的查詢?
使用SQL-Server 2012的
編輯
重建我的情況,請參見下面的代碼(抱歉沒有連接小提琴,但該網站是不是在我的當前位置響應)
CREATE TABLE #TB_Customer
(
CustomerID int , --PK
Title varchar(50),
FirstName varchar(50),
MiddleName varchar(50),
LastName varchar(50),
Suffix varchar(50),
EmailAddress varchar(50),
Phone varchar(50),
Gender varchar(50),
Birthdate varchar(50),
--no fk
PRIMARY KEY (CustomerID)
)
insert into #TB_Customer values
('1','Sir','John','Jacob','Adams','St','[email protected]','0677731235','M','1989-04-06'),
('2','Mr.','Russel','Thyrone','Peterson','pr','[email protected]','555-010405','M','1963-02-01'),
('3','Ms.','Anne','Candice','Acola','aca','[email protected]','07408989989','F','1988-05-19'),
('4','Mrs.','Sophia','Veronika','Turner','tvs','[email protected]','0423423887','F','1983-06-20'),
('5','Ms','Margaret','','Delafleur','','[email protected]','233223355','Female','1982-02-25'),
('6','Mrs','Jessica','Luana','Cruz','','[email protected]','787876631','Female','1922-05-05'),
('7','Mr','Dyrius','','Cruz','dc','[email protected]','0673332211','Male','1987-03-01')
update #TB_Customer
set Gender = 'Male' where Gender = 'M'
update #TB_Customer
set Gender = 'Female' where Gender = 'F'
似乎沒給我。 –
@DanBracuk請參閱第5行的預期結果。那不好。同樣是第7行 – CM2K
當你不顯示結果時,我們應該如何看到你的查詢不起作用?此外,您列出三個案例,您的代碼有四個,並且順序相當奇怪。 – Henrik