SQL 如果姓名太短则查询查找名字的前六个字符追加 $
SQL query to find first six characters of the first name if the name is too short append $
附上两张图,第一张是问题,第二张是我试过的代码。我坚持使用 append $ 。我什至添加了我的代码
T-sql:
CREATE TABLE Tab1 (
tname VARCHAR (50)
);
INSERT INTO Tab1(tname)
VALUES ('Ravi Ashwin'),
('Mahendra Singh Dhoni'),
('Shikhar Dhawan');
Select a tname, substring (tname, 1,6) AS First_Sic_character, LEN (tname) AS Character_count,
CASE WHEN LEN(tname) BETWEEN 0 AND 12 THEN 'SHORT & SWEET'
WHEN LEN(tname) BETWEEN 13 AND 15 THEN 'MEDIUM & PREMIUM'
WHEN LEN (tname) > 15 THEN ' LENGHTY$LOVELY'
END AS Category
From Tab1
使用这个
CONVERT(VARCHAR(6),tname+ SUBSTRING('$$$$$$',LEN(tname),6))
试试这个:
CREATE TABLE #Tab1 (
tname VARCHAR (50)
);
INSERT INTO #Tab1(tname)
VALUES ('Ravi Ashwin'),
('Mahendra Singh Dhoni'),
('Shikhar Dhawan');
Select tname,
LEFT(CONCAT(SUBSTRING(tname,0,CHARINDEX(' ',tname)),'$$$$$$'),6) AS First_Sic_character, LEN (tname) AS Character_count,
CASE WHEN LEN(tname) BETWEEN 0 AND 12 THEN 'SHORT & SWEET'
WHEN LEN(tname) BETWEEN 13 AND 15 THEN 'MEDIUM & PREMIUM'
WHEN LEN (tname) > 15 THEN ' LENGHTY$LOVELY'
END AS Category
From #Tab1
DROP TABLE #Tab1
with cte(name) as(VALUES ('Ravi Ashwin'),
('Mahendra Singh Dhoni'),
('Shikhar Dhawan'))
select name,substring(name,1,6)
,(case when length(substring(name,1,6))<=6 then concat(name,'$') end )::varchar
,(case when length(name) between 0 and 12 then 'SHORT & SWEET'
when length(name) between 13 and 15 then 'MEDIUM & PREMIUM'
when length(name)>15 then 'LENGHTY$LOVELY' end)Category
from cte
附上两张图,第一张是问题,第二张是我试过的代码。我坚持使用 append $ 。我什至添加了我的代码
T-sql:
CREATE TABLE Tab1 (
tname VARCHAR (50)
);
INSERT INTO Tab1(tname)
VALUES ('Ravi Ashwin'),
('Mahendra Singh Dhoni'),
('Shikhar Dhawan');
Select a tname, substring (tname, 1,6) AS First_Sic_character, LEN (tname) AS Character_count,
CASE WHEN LEN(tname) BETWEEN 0 AND 12 THEN 'SHORT & SWEET'
WHEN LEN(tname) BETWEEN 13 AND 15 THEN 'MEDIUM & PREMIUM'
WHEN LEN (tname) > 15 THEN ' LENGHTY$LOVELY'
END AS Category
From Tab1
使用这个
CONVERT(VARCHAR(6),tname+ SUBSTRING('$$$$$$',LEN(tname),6))
试试这个:
CREATE TABLE #Tab1 (
tname VARCHAR (50)
);
INSERT INTO #Tab1(tname)
VALUES ('Ravi Ashwin'),
('Mahendra Singh Dhoni'),
('Shikhar Dhawan');
Select tname,
LEFT(CONCAT(SUBSTRING(tname,0,CHARINDEX(' ',tname)),'$$$$$$'),6) AS First_Sic_character, LEN (tname) AS Character_count,
CASE WHEN LEN(tname) BETWEEN 0 AND 12 THEN 'SHORT & SWEET'
WHEN LEN(tname) BETWEEN 13 AND 15 THEN 'MEDIUM & PREMIUM'
WHEN LEN (tname) > 15 THEN ' LENGHTY$LOVELY'
END AS Category
From #Tab1
DROP TABLE #Tab1
with cte(name) as(VALUES ('Ravi Ashwin'),
('Mahendra Singh Dhoni'),
('Shikhar Dhawan'))
select name,substring(name,1,6)
,(case when length(substring(name,1,6))<=6 then concat(name,'$') end )::varchar
,(case when length(name) between 0 and 12 then 'SHORT & SWEET'
when length(name) between 13 and 15 then 'MEDIUM & PREMIUM'
when length(name)>15 then 'LENGHTY$LOVELY' end)Category
from cte