How to remove the last numbers from the data and group in 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:
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
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.