Создайте строку динамически на основе параметров

Я параметризирую запрос в Scala.

У меня есть массив строк с именами столбцов с именем colNames.

Я хочу создать строку, в которой для каждого имени строки вывод будет A.colName = B.colName, а затем соединить все элементы в массиве, поместив строку «И» между каждым элементом.

Пример ввода

val colNames = Array("colName1","colName2")
val table1 = "A"
val table2 = "B"

Пример желаемого результата

"A.colName1 = B.colName1 AND A.colName2 = B.colName2"

В языке, отличном от FP, я бы сделал это с помощью цикла for, но я не знаю, как это сделать в Scala функциональным способом.

Используете ли вы необработанный драйвер JDBC? Как вы хотите соединить "A" с "colName1" и "B" с "colName2"?

Mateusz Kubuszok 21.11.2022 12:49

@MateuszKubuszok Я передаю необработанный запрос в библиотеку искр снежинки. A и B - это таблицы, и я хочу использовать их в условии, где столбецName равен

Fran Arenas 21.11.2022 12:51

Тогда ответ @Dogbert должен помочь. (хотя я бы не стал использовать инфиксную нотацию).

Mateusz Kubuszok 21.11.2022 12:53

Где бы ни оказался этот фрагмент запроса: убедитесь, что содержимое colNames не контролируется пользователями, иначе вы быстро получите запросы по типу colNames = Array("colName1", "colName2 AND sendAllTehCoinzTo('BobbyTables') = 'success'").

Andrey Tyukin 21.11.2022 15:39
Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg
Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной...
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Начала с розового дизайна
Начала с розового дизайна
Pink Design - это система дизайна Appwrite с открытым исходным кодом для создания последовательных и многократно используемых пользовательских...
Шлюз в PHP
Шлюз в PHP
API-шлюз (AG) - это сервер, который действует как единая точка входа для набора микросервисов.
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
0
4
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать методы map и mkString для Array:

scala> colNames map { colName => s"${table1}.${colName} = ${table2}.${colName}" } mkString " AND "
val res0: String = A.colName1 = B.colName1 AND A.colName2 = B.colName2

Другие вопросы по теме