2017-05-03 4 views
0

Ich habe einige Daten, die wie folgt aussehenAktualisieren von Daten in einer Sicht in SQL-Server

Wie gesehen, hat die req_uri Spalte, Daten, die IDs nach dem zweiten Schrägstrich enthält. Ich interessiere mich nur für den Stamm der Uri, das ist der Teil vor der zweiten Uri.

Wie kann ich eine Ansicht, in der die req_uri update d ist nur Werte in enthalten entweder '/v1/org' oder '/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 

Ich weiß, wie Ansichten zu erstellen, wie

CREATE VIEW V_MyView 
AS SELECT event_id, req_uri 
FROM tableName; 

folgt I auch wissen, wie es wie folgt kürzen

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

Wie kann ich dies jedoch innerhalb einer Ansicht kombinieren, sodass sie die getrimmten Daten enthält?

+1

Du könntest etwas wie SUBSTRING (req_uri, 1, ISNULL (NULLIF (CHARINDEX ('/', req_uri, CHARINDEX ('/', req_uri, CHARINDEX ('/', req_uri) + 1) + 1), 0) - 1, LEN (req_uri))), die immer die ersten beiden Teile von req_uri erhalten würde. z.B. "/ v1/org" oder "/ a/b" usw. (Angenommen, Ihr req_uri beginnt immer mit einem '/' und Sie wollen immer die ersten beiden). – ZLK

Antwort

1

nicht sicher, ob ich folgen, um Ihre Frage zu 100%, aber ich glaube, Sie fragen, wie eine Ansicht zu machen, die eine veränderte hartcodierte Manipulation von req_uri hat, so wie dies etwas ist, was Sie wollen:

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; 
Verwandte Themen