Добавьте кавычки и запятую, чтобы встроить предложение для SQL

1

Для обработки запросов поддержки я пытаюсь создать небольшой интерфейс, который выбирает строку строки с разделителем строки строки из многострочного текстового поля ASP и дает результат с одинарными кавычками и запятой, скорректированными с текстом. Пример

A1234
A1235
A1236

Стало бы тем, что может войти в "SQL In Clause",

'A1234',
'A1235',
'A1236'

Как я могу улучшить приведенный ниже код для достижения того же?

string[] arr = txtBox.Text.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

Я знаю формулу excel (= "'" & A1 & "',") для того же самого, но excel недоступен на нескольких машинах.

  • 0
    Почему нет, когда пользователь вводит данные, просто заставьте их использовать разделитель (например,) для разделения записей. Например, как работает инструмент отслеживания USPS: tools.usps.com/go/TrackConfirmAction!input.action
Теги:
sql-server

2 ответа

2
Лучший ответ

Если бы это был я, я бы:

var value = "IN ('" + String.Join("','", txtBox.Lines) + "')";

Или только для значений:

var value = "'" + String.Join("','", txtBox.Lines) + "'";

Он в основном соединяет каждую строку текстового поля (т.е. Каждое значение в каждой строке) с помощью ',' Это хорошо, но вы должны убедиться, что есть ' в начале и конце".

Дальнейшее чтение свойства Lines:

http://msdn.microsoft.com/en-us/library/system.windows.forms.textboxbase.lines(v=vs.110).aspx

РЕДАКТИРОВАТЬ:

string[] lines = txt.Split(new Char[] { '\n', '\r' },
                            StringSplitOptions.RemoveEmptyEntries);

var value = "'" + String.Join("','", lines) + "'";
  • 0
    Я пробовал свойство txtBox.Lines. Мой интерфейс веб-интерфейс, и я не могу сделать то же самое для текстового поля asp. Есть ли альтернатива?
  • 0
    Извиняюсь. Я отредактирую ответ.
1

Проверьте этот ответ... Конкатентные строки в списке <string> с помощью LINQ

... есть функция Agregate()! никогда не знал этого... так что вы можете сказать

        var txtBoxText = @"A1234
A1235

A1236";
        var result = txtBoxText.Split(
            Environment.NewLine.ToCharArray(),
                StringSplitOptions.RemoveEmptyEntries)
            .Select(x=>"'" + x + "'")
            .Aggregate((i,j)=> i + "," + j);

        Assert.AreEqual(result, @"'A1234','A1235','A1236'");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню