简体   繁体   中英

Remove last number digit in T-SQL

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM