sqlselectsql-likexquery-sqlcontainstable

SQL - match part of a string with Column value


The user input the following string 2SMD4COMPUTEREH2KLD [free input] what i need is to find the correct id in the table devices

The user input the following string 2SMD4COMPUTEREH2KLD [ 2SMD4COMPUTEREH2KLD ] what i need is to find the correct id in the table in this case Id = 3, in the next iteration the user could input KL2USB3UYDJKWLDK [USB IS INSIDE THE STRING], in this case the id should be = 2

ID Value
1 LAPTOP
2 USB
3 COMPUTER
4 MONITOR
5 MOUSE

Solution

  • Here is how I would accomplish your request using SQL Server SSMS as an example:

    DROP TABLE IF EXISTS #TEST_DATA;
    
    CREATE TABLE #TEST_DATA(
        ID INT IDENTITY(1,1)
        ,[VALUE] VARCHAR(20)
    )
    
    INSERT INTO #TEST_DATA (
        VALUE
    )
    VALUES
    ('LAPTOP'), ('USB'), ('COMPUTER'),('MONITOR'), ('MOUSE')
    
    DROP TABLE IF EXISTS #TEST_VALUES;
    
    CREATE TABLE #TEST_VALUES(
        [INPUT] VARCHAR(20)
    )
    
    INSERT #TEST_VALUES (
        INPUT
    )
    VALUES
    ('2SMD4COMPUTEREH2KLD'), ('KL2USB3UYDJKWLDK')
    
    
    SELECT
        TD.*
        ,TV.INPUT
    FROM
        #TEST_VALUES TV
    LEFT OUTER JOIN
        #TEST_DATA TD
        ON TV.INPUT LIKE '%' + TD.VALUE + '%'