Ответ 1
Кавычки не сохраняются, потому что они фактически не являются частью строкового значения, они просто необходимы для указания строковых литералов в вашем коде.
Итак, не используйте toString()
. Вместо этого один из способов сделать это:
var arr = ['item1','item2','item3','item4'];
var quotedAndCommaSeparated = "'" + arr.join("','") + "'";
// quotedAndCommaSeparated === "'item1','item2','item3','item4'"
Метод Array.join() возвращает строку, которая представляет собой все элементы массива, объединенные в одну строку с (необязательным) разделителем между каждым элементом. Поэтому, если вы укажете разделитель, который включает кавычки и запятые, вам просто нужно вручную добавить начальную и конечную цитату для первого и последнего элементов (соответственно).
(И, пожалуйста, скажите, что вы не используете клиентский JavaScript для создания своего SQL.)
EDIT: чтобы разрешить пустой массив, включите значение по умолчанию для результирующей строки, иначе (как указано отсутствующим) строка будет "''"
:
var newString = arr.length === 0 ? "" : "'" + arr.join("','") + "'";
// default for empty array here ---^^
(Возможно, более целесообразно иметь if (arr.length===0)
для выполнения некоторых других действий, а не для выполнения инструкции SELECT.)