DECLARE @T TABLE
(
BP1 VARCHAR (30),
BP2 VARCHAR (30),
BP3 VARCHAR (30)
)
INSERT @T
SELECT '10x184','10x184','6x70' UNION ALL
SELECT '303x112','8x40','3x112' UNION ALL
SELECT '8x100','4x100','8x65'
SELECT * FROM @T
/*
if 8 before x and less than 95 after x need to be in output
if 6 before x and less than 71 after x need to be in output
*/
预期产出:
6x70
8x40
8x65
答案 0 :(得分:0)
这对你有用:
SELECT BP1 FROM @T
WHERE (CAST(SUBSTRING(BP1, 1, CHARINDEX('x', BP1) - 1) AS SMALLINT) = 6 AND CAST(SUBSTRING(BP1, CHARINDEX('x', BP1) + 1, LEN(BP1) - CHARINDEX('x', BP1)) AS SMALLINT) < 71)
OR
(CAST(SUBSTRING(BP1, 1, CHARINDEX('x', BP1) - 1) AS SMALLINT) = 8 AND CAST(SUBSTRING(BP1, CHARINDEX('x', BP1) + 1, LEN(BP1) - CHARINDEX('x', BP1)) AS SMALLINT) < 95)
UNION
SELECT BP2 FROM @T
WHERE (CAST(SUBSTRING(BP2, 1, CHARINDEX('x', BP2) - 1) AS SMALLINT) = 6 AND CAST(SUBSTRING(BP2, CHARINDEX('x', BP2) + 1, LEN(BP2) - CHARINDEX('x', BP2)) AS SMALLINT) < 71)
OR
(CAST(SUBSTRING(BP2, 1, CHARINDEX('x', BP2) - 1) AS SMALLINT) = 8 AND CAST(SUBSTRING(BP2, CHARINDEX('x', BP2) + 1, LEN(BP2) - CHARINDEX('x', BP2)) AS SMALLINT) < 95)
UNION
SELECT BP3 FROM @T
WHERE (CAST(SUBSTRING(BP3, 1, CHARINDEX('x', BP3) - 1) AS SMALLINT) = 6 AND CAST(SUBSTRING(BP3, CHARINDEX('x', BP3) + 1, LEN(BP3) - CHARINDEX('x', BP3)) AS SMALLINT) < 71)
OR
(CAST(SUBSTRING(BP3, 1, CHARINDEX('x', BP3) - 1) AS SMALLINT) = 8 AND CAST(SUBSTRING(BP3, CHARINDEX('x', BP3) + 1, LEN(BP3) - CHARINDEX('x', BP3)) AS SMALLINT) < 95)