[英]Remove last number digit in T-SQL
How to remove the last numbers from the data and group in tsql , 如何从tsql的数据和组中删除最后一个数字,
Query 询问
select browser from Table1 group by browser
Result 结果
Chrome11
Chrome28
Chrome30
Chrome31
Chrome32
Chrome33
Firefox12
Firefox22
Firefox30
Firefox32
Firefox33
IE10
IE7
IE8
IE9
IEMobile
IEMobile10
InternetExplorer11
Mozilla
Opera9
Safari
Safari5
Safari6
Required format 所需格式
Chrome
Firefox
IE
Safari
InternetExplorer
Mozilla
IEMobile
Note: We don't no which browser the client using 注意:我们不禁止客户端使用哪个浏览器
this will Work For You .. 这将为您工作..
select distinct browser from (
select REPLACE (REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE
(browser, '0', ''),'1', ''),'2', ''),'3', ''),'4', ''),'5', ''),
'6', ''),'7', ''),'8', ''),'9', '') as browser
from TestTable group by browser) temp
You can use nested REPLACE() which goes up to 32 levels deep: 您可以使用嵌套的REPLACE(),它最多可以扩展到32个级别:
DECLARE @mystring NVARCHAR(30)
SET @mystring = 'TEST76'
select REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE (@mystring, '0', ''),
'1', ''),
'2', ''),
'3', ''),
'4', ''),
'5', ''),
'6', ''),
'7', ''),
'8', ''),
'9', '')
Result : TEST 结果:测试
Hope this helps. 希望这可以帮助。
WITH ExampleCte(Browser) AS (
SELECT
'Chrome11' UNION ALL SELECT
'Chrome28' UNION ALL SELECT
'Chrome30' UNION ALL SELECT
'Chrome31' UNION ALL SELECT
'Chrome32' UNION ALL SELECT
'Chrome33' UNION ALL SELECT
'Firefox12' UNION ALL SELECT
'Firefox22' UNION ALL SELECT
'Firefox30' UNION ALL SELECT
'Firefox32' UNION ALL SELECT
'Firefox33' UNION ALL SELECT
'IE10' UNION ALL SELECT
'IE7' UNION ALL SELECT
'IE8' UNION ALL SELECT
'IE9' UNION ALL SELECT
'IEMobile' UNION ALL SELECT
'IEMobile10' UNION ALL SELECT
'InternetExplorer11' UNION ALL SELECT
'Mozilla' UNION ALL SELECT
'Opera9' UNION ALL SELECT
'Safari' UNION ALL SELECT
'Safari5' UNION ALL SELECT
'Safari6'
)
SELECT
Browser,
Left(Browser, Len(Browser) - PatIndex('%[^0-9]%', Reverse(Browser)) + 1) AS BrowserWithoutNumber
FROM
ExampleCte
You could do something like this: 您可以执行以下操作:
Test data: 测试数据:
DECLARE @tbl TABLE(browser VARCHAR(100))
INSERT INTO @tbl
VALUES
('Chrome11'),('Chrome28'),('Chrome30'),
('Chrome31'),('Chrome32'),('Chrome33'),
('Firefox12'),('Firefox22'),('Firefox30'),
('Firefox32'),('Firefox33'),('IE10'),
('IE7'),('IE8'),('IE9'),('IEMobile'),
('IEMobile10'),('InternetExplorer11'),('Mozilla'),
('Opera9'),('Safari'),('Safari5'),('Safari6')
And then a query like this: 然后是这样的查询:
;WITH CTE
AS
(
SELECT
(
CASE
WHEN PATINDEX('%[0-9.-]%', browser) = 0
THEN browser
ELSE SUBSTRING(browser,0,PATINDEX('%[0-9.-]%', browser))
END
) AS browser
FROM
@tbl AS tbl
)
SELECT
*
FROM
CTE
GROUP BY
CTE.browser
This will get you an output like this: 这将为您提供如下输出:
Chrome
Firefox
IE
IEMobile
InternetExplorer
Mozilla
Opera
Safari
Reference: 参考:
Create a Function: 创建一个函数:
Create Function fnStrFromAlphaNum(@str varchar(100))
returns varchar(100)
as
begin
if patindex('%[0-9]%',@str)>0
set @str = SUBSTRING(@str,1,patindex('%[0-9]%',@str)-1)
return @str
end
Call this function in your query: 在查询中调用此函数:
select distinct fnStrFromAlphaNum(browser)
from table1
You can do like this: 您可以这样:
WITH cte AS
(SELECT rtrim(
substring(
browser,
1,
PATINDEX('%[0-9]%', browser) -1
)
) as browser
FROM table)
SELECT cte.browser FROM cte
GROUP BY cte.browser
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.