SQL Server recorta antes y después de valores específicos.
Tengo una base de datos que tiene una columna con una cadena larga y estoy buscando una manera de extraer solo una cierta parte de ella.
Aquí hay un ejemplo:
{
"vendorId": 53,
"externalRef": "38828059 $567.82",
"lines": [{
"amount": 0,
"lineType": "PURCHASE",
"lineItemType": "INVENTORY",
"inventory": {
"cost": 0,
"quantity": 1,
"row": "6",
"seatType": "CONSECUTIVE",
"section": "102",
"notes": "http://testurl/0F005B52CE7F5892 38828059 $567.82 ,special",
"splitType": "ANY",
"stockType": "ELECTRONIC",
"listPrice": 0,
"publicNotes": " https://brokers.123.com/wholesale/event/146489908 https://www.123.com/buy-event/4897564 ",
"eventId": 3757669,
"eventMapping": {
"eventDate": "",
"eventName": "Brandi Carlile: Beyond These Silent Days Tour",
"venueName": "Gorge Amphitheatre"
},
"tickets": [{
"seatNumber": 1527
}]
}
}]
}
Lo que estoy buscando extraer es solo http://testurl/0F005B52CE7F5892
¿Alguien podría ayudarme con la sintaxis de cómo llamar a mi consulta para que cree una nueva columna temporal y me dé solo este valor extraído para cada fila en esta columna?
Uso SQL Server 2008, por lo que algunas funciones más nuevas no funcionarán para mí.
davy.ai
Para extraer la porción deseada de la cadena, puedes usar la función SUBSTRING junto con CHARINDEX. La sintaxis sería la siguiente:
Explicación:
– SUBSTRING: devuelve una porción de la cadena en función de la posición de inicio y la longitud especificada.
– CHARINDEX: devuelve la posición de inicio de un carácter / cadena específico dentro de una cadena.
– nombre_columna: el nombre de la columna que contiene la cadena larga.
– ‘http:’: la cadena específica desde la cual deseas comenzar a extraer.
– ‘ ‘: la cadena en la que deseas detener la extracción. En este caso, es el primer espacio después de la cadena ‘http:’.
– columna_temporal: el nombre que le das a tu nueva columna extraída.
– nombre_tabla: el nombre de la tabla que contiene los datos.
Esta consulta debería funcionar en SQL Server 2008.