-1
votes

Sélectionnez Texte de l'intérieur d'une chaîne après un mot-clé

J'ai une colonne dans SQL Server qui a une chaîne qui ressemble à ceci. J'essaie d'obtenir la valeur du "quelque_id" qui dans ce cas serait '12345678911 ". Toute aide sur la façon dont je pourrais obtenir une valeur numérique. Je n'arrive pas à l'obtenir à l'aide de la soustrine () code> et charindex () code> fonctions.

  select TOP 100 SUBSTRING(col,CHARINDEX('some_id',col), 28) 
  From tableName

  -- RESULT
  -- some_id""=>""12345678911"


6 commentaires

Salut Dale - Je viens d'éditer mon post original avec où je suis coincé


Il s'agit donc d'un exemple précis de données dans la colonne, avec toutes ces citations doubles "" "" "" "=>" "12345678911" "" "" "" "" "" "" "" "." "" " "=>" "Faux" "," "AntherString" "=>" "0" "


Oui, c'est exactement ce à quoi ça ressemble.


Le format de la chaîne sera identique. Droite? Je veux dire comme "" {quelque_id} "" => "" {chiffres} "". c'est "" quelque_id "" => "" 12345678911 ""


Salut Mohit, c'est correct. C'est la même chose sur toutes les lignes.


D'accord, je viens de répondre


3 Réponses :


1
votes

Pour votre exemple donné, les renvoient le résultat requis. Vous venez de créer une sous-chaîne à partir de votre point de départ, puis de trouver la prochaine paire de guillemets, puis sous-chaîne entre le point de départ et la prochaine paire de citations doubles: xxx

qui peut être combiné dans un Déclaration unique, mais vous pouvez voir que le code duplicate, donc je trouve la séparation de la séparation est plus clair: xxx


0 commentaires

1
votes

Vous pouvez aller avec la requête ci-dessous pour un exemple donné.

;WITH CTE
AS
(
    SELECT * 
    FROM (
            VALUES(' """some_id""=>""12345678911"", ""someother_id""=>"""", ""somethingelse""=>""False"", ""anotherString""=>""0""'),
                  (' """some_id""=>""23428324"", ""someother_id""=>"""", ""somethingelse""=>""False"", ""anotherString""=>""0""'),
                  (' """some_id""=>""8934587349"", ""someother_id""=>"""", ""somethingelse""=>""False"", ""anotherString""=>""0""')
         ) V (String)
)
SELECT SUBSTRING(String, 
                 CHARINDEX('""some_id""=>""', String)+LEN('""some_id""=>""'),
                 (CHARINDEX('""', String, CHARINDEX('""some_id""=>""', String)+LEN('""some_id""=>""')))-(CHARINDEX('""some_id""=>""', String)+LEN('""some_id""=>""'))) 
FROM CTE


0 commentaires

2
votes

Vous pouvez facilement convertir cela en une fonction: xxx pré>

renvoie p> xxx pré>

fonction d'échantillon: p>

SELECT TOP 100 dbo.GetVal ( col, 'some_id""=>""' ) AS [Value] 
  FROM tableName;


0 commentaires