Hola, he encontrado un error bastante extraño al usar el método OrderByRaw de SqlKata.

var query = new Query("SoftwareVersions").OrderByRaw("string_to_array([version], '.')::int[] DESC")

También lo probé aquí https://sqlkata.com/playground/pgsql mismo error.

El problema es con los corchetes int, se están convirtiendo como "columna" sin nada o simplemente 2 comillas, aquí está el resultado que es completamente idéntico al producido por SqlKata en tiempo de ejecución:

SELECT * FROM "SoftwareVersions" ORDER BY string_to_array("version", '.') :: int "" DESC

Nota: aquí puede ver que después del elenco int tenemos 2 comillas.

Mi pregunta es cómo evitar este comportamiento inesperado usando SQLKata.

0
kirhhof 27 oct. 2020 a las 16:34

1 respuesta

La mejor respuesta

De forma predeterminada, SqlKata intercambia [] por los identificadores correspondientes para cada compilador, por lo que esta es la razón por la que obtiene las comillas dobles ", en MySql puede obtener el acento inverso y así sucesivamente.

Para evitar esto, simplemente escápelos con una barra invertida.

.OrderByRaw(@"string_to_array([version], '.')::int\[\] DESC")

Consulte https://sqlkata.com/playground/pgsql?code=var%20query%20%3D%20new%20Query(%22SoftwareVersions%22).OrderByRaw(%40%22string_to_array(%5Bversion%5D%2C%20 '. ')% 3A% 3Aint% 5C% 5B% 5C% 5D% 20DESC% 22

1
amd 27 oct. 2020 a las 13:42