Значение Split varchar, используемое в предложении WHERE - PullRequest
0 голосов
/ 08 апреля 2019

Я передаю список строк из кода C #, сцепленных с переменной varchar в MySQL, разделенных ",".

Я хочу разделить varchar и использовать его в моем предложении WHERE, какПример кода ниже:

SELECT * FROM table_name WHERE column_name IN split(varchar_variable, ",")

Есть ли в mysql функция split, которая возвращает массив?Или, если у вас есть предложения о том, как это сделать правильно, заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 08 апреля 2019

Если вы хотите передать несколько значений внутри предложения WHERE с помощью оператора SELECT, вам нужно изменить значения параметра WHERE предложения, например

string values = "'\'Albania\',\'Andorra\''";

Если вы отлаживаете этот код, тогда онбудет выглядеть,

''Albania','Andorra''

И в MySql редакторе вы можете передавать такие же значения, как,

SET @myArray := '\'Albania\',\'Andorra\'';

Итак, в конечном итоге ваш оператор SELECT будет,

SET @myArray := '\'Albania\',\'Andorra\'';

SET @sql = CONCAT('SELECT CountryID, CountryName FROM Countries WHERE CountryName IN (', @myArray, ')');

PREPARE statement FROM @sql;
EXECUTE statement;

Выход:

enter image description here

0 голосов
/ 08 апреля 2019

К сожалению, такой функции нет.

Вы можете сделать обходной путь: если у вас есть значения типа

value1,value2,value3

Тогда достаточно искать ,value1,, используя оператор LIKE. Для того, чтобы это работало, вы должны заполнить список запятыми:

,value1,value2,value3,

Таким образом, ваш запрос станет:

SELECT *
FROM table_name
WHERE ',' + varchar_variable + ',' LIKE ',' + column_name + ','
...