2017-05-03 4 views
0

j'ai des données qui se présente comme suitdonnées de mise à jour à l'intérieur d'une vue dans le serveur SQL

Comme on le voit, la colonne req_uri, contient des données qui contient ids après la seconde barre oblique. Je ne m'intéresse qu'à la racine de l'uri, c'est-à-dire à la partie avant le second uri.

Comment puis-je créer une vue, où le req_uri est update d pour ne contenir que des valeurs dans les deux '/v1/org' ou '/v1/registration'

event_id        req_uri 
0007845f-cf6c-4513-9a5f-96d02482ef78 /v1/org/6970b2a5-e220-4d68-8fc0-2992a1b8bdb7 
000a1fb0-ac4d-489e-866a-7c07caebb959 /v1/registration 
000fe2a9-6d76-4045-93ac-9df68971539c /v1/org/6970b2a5-e220-4d68-8fc0-2992a1b8bdb7 
0017e50b-c7b5-4e42-b670-f2d9f0af752f /v1/org/e536c1ed-4822-4b88-8c01-9f14c1c583e3/apps 
0025a81f-cf81-4c60-8a39-3a626c1092a3 /v1/org/6970b2a5-e220-4d68-8fc0-2992a1b8bdb7 
00304cef-87f3-426b-984c-b0b906b4815a /v1/org/e536c1ed-4822-4b88-8c01-9f14c1c583e3/apps 

Je sais comment créer des vues, comme suit

CREATE VIEW V_MyView 
AS SELECT event_id, req_uri 
FROM tableName; 

I aussi savoir comment le couper comme suit

update req_uri set req_uri = '/v1/org' where req_uri like '/v1/org%' 

Cependant, comment puis-je combiner cela à l'intérieur d'une vue, afin qu'il contienne les données rognées?

+1

Vous pourriez faire quelque chose comme SUBSTRING (req_uri, 1, ISNULL (NULLIF (CHARINDEX ('/', req_uri, CHARINDEX ('/', req_uri, CHARINDEX ('/', req_uri) + 1), 0) - 1, LEN (req_uri))) qui recevrait toujours les deux premières parties de la req_uri. par exemple. "/ v1/org" ou "/ a/b" etc. (En supposant que votre req_uri commence toujours par un '/' et vous voulez toujours les deux premiers). – ZLK

Répondre

1

Je ne sais pas je suivre votre question 100%, mais je pense que vous demandez comment faire une vue qui a une altération manipulation codée en dur de req_uri, donc quelque chose comme ceci est ce que vous voulez:

CREATE VIEW V_MyView 
AS 
SELECT event_id, 
    CASE WHEN req_uri LIKE '/v1/org%' THEN '/v1/org' 
     WHEN req_uri LIKE '/v1/registration%' THEN '/v1/registration' 
     ELSE NULL END as [req_uri] 
FROM tableName;