0
votes

Vérifiez uniquement le champ spécifique présent dans la chaîne

Je veux imprimer l'une des chaînes de condition suivantes si elle contient SEULEMENT STRY> Champ de numéro.

Number = '12908,13232323'


2 commentaires

SQL Server n'est pas votre ami pour cela; C'est affreux de la manipulation des chaînes. Si vous avez besoin de faire quelque chose comme ça, dans votre application est le bon endroit. Cela (en vérité) a la sensation du problème XY.


Peut-être une simplification excessive, mais pourrait-elle suffire à simplement chercher des conditions contenant le mot «nombre» et non le mot «et»?


3 Réponses :


2
votes

J'utilise une fonction Split CTE

DECLARE @Condition varchar(max) = 'Number =''12908,13232323,12122'' AND Name=''Mak'''

DECLARE @Condition1 varchar(max) = 'Address=''UK'' AND Number =''12908'' AND Name=''Mak'''

DECLARE @Condition2 varchar(max) = 'Number =''12908,13232323'''

DECLARE @Table AS TABLE (ID INT, Condition varchar(MAX))
INSERT INTO @Table VALUES
(0,@Condition),(1,@Condition1),(2,@Condition2);

WITH CTE AS (
SELECT T.*, C.value,COUNT(1) OVER (PARTITION BY ID) Cnt
FROM @Table T
CROSS APPLY dbo.fn_string_split(Condition,'AND') C 
)
SELECT * FROM cte WHERE Cnt=1 AND LEFT(REPLACE(value,' ',''),7) = 'Number='


0 commentaires

0
votes

Essayé ce qui suit et fait le travail effectué.

DECLARE @Condition varchar(max) = 'Number =''12908,13232323,12122'' AND Name=''Mak'''

DECLARE @Condition1 varchar(max) = 'Address=''UK'' OR Number =''12908'' AND Name=''Mak'''

DECLARE @Condition2 varchar(max) = 'Number =''12908,13232323'''

IF REPLACE(REPLACE(@Condition,' OR ',' @ '),' AND ',' @ ') NOT LIKE '%@%' 
BEGIN
    PRINT(@Condition);
END
ELSE IF REPLACE(REPLACE(@Condition1,' OR ',' @ '),' AND ',' @ ') NOT LIKE '%@%' 
BEGIn
    PRINT(@Condition1);
END
ELSE IF REPLACE(REPLACE(@Condition2,' OR ',' @ '),' AND ',' @ ') NOT LIKE '%@%'  
BEGIn
    PRINT(@Condition2);
END
ELSE
BEGIN
    PRINT('none');
END


0 commentaires

1
votes

Utiliser comme trouver "numéro" sans "et". xxx

requête xxx


0 commentaires