SQL - 将字符串的一部分与列值匹配

问题描述 投票:0回答:2

用户输入以下字符串2SMD4COMPUTEREH2KLD【自由输入】 我需要的是在表 devices 中找到正确的 id

用户输入以下字符串 2SMD4COMPUTEREH2KLD [ 2SMD4COMPUTEREH2KLD ] 我需要的是在表中找到正确的ID 在这种情况下,Id = 3,在下一次迭代中,用户可以输入 KL2USB3UYDJKWLDK [USB IS INSIDE THE STRING],在这种情况下,id 应为 = 2

身份证 价值
1 笔记本电脑
2 USB
3 电脑
4 监控
5 鼠标
sql select sql-like xquery-sql containstable
2个回答
0
投票

您可以使用动态

LIKE
表达式:

SELECT ID
FROM yourTable
WHERE <input> LIKE '%' || Value || '%';

使用您给出的示例,以下内容是正确的:

2SMD4COMPUTEREH2KLD LIKE '%COMPUTER%'

并且会返回

ID = 2


0
投票

以下是我如何使用 SQL Server SSMS 作为示例来完成您的请求:

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 + '%'
© www.soinside.com 2019 - 2024. All rights reserved.