es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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í.

Tags:  , ,

Answer

  1. Avatar for 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:

    SELECT SUBSTRING(nombre_columna, CHARINDEX('http:', nombre_columna), CHARINDEX(' ', nombre_columna, CHARINDEX('http:', nombre_columna))-CHARINDEX('http:', nombre_columna)) as columna_temporal
    FROM nombre_tabla
    

    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.

Comments are closed.