Недоброкачественная продукция - заменяет все случаи '(апострофа) с' '(два апострофа) в AnsiString (C++)

Вот несколько скриншотов с результатами приведенного ниже Power Query. Я выбрал (в Excel 2003) Данные-> Импорт внешних данных-> Новый запрос к базе данных. Затем я выбрал «Файлы Excel» и добавил нужные данные. Убедитесь, что в параметрах запроса выбрано «is not null». Затем я добавил функцию автосортировки.

ScreenShot1

ScreenShot2

Вы можете использовать Power Query ] в Sheet2 Excel Workbook. Еще одна ссылка здесь . Таким образом, вы можете обновить данные, когда вам нужно. Затем используйте SQL для запроса того, что вам нужно.

Он довольно прост в использовании и не требует никакого кодирования (если вы не хотите использовать SQL).

Это можно сделать, а затем в другой рабочей книге вы можете выполнить фильтрацию и сортировку.

Сообщение @ ryan-wildry довольно велико (как и текст его команды для SQL), но если вы не хотите использовать vba или базу данных, вы можете использовать это (как и его текст SQL) . [+1112]

Примером может быть: SELECT * FROM [Sheet1 $] WHERE Column2 = 'X';

Единственная проблема будет, если вы смешаете типы данных в одном столбце. Как видно из строк 1 & amp; 4 (они не смогли встретиться с запросом, потому что значения не одного типа. (Это использует Excel 2003, поэтому, если у вас более новая версия, вы можете проверить это с помощью этого).

Я провел некоторое исследование и обнаружил, что Power Query в Excel будет обрабатывать смешанные типы данных, поэтому вам следует настроить его, если вы используете Power Query.

5
задан Cœur 30 April 2017 в 13:03
поделиться

5 ответов

На самом деле я получил ответ один...

item = StringReplace( item, "'", "''", TReplaceFlags() <<rfReplaceAll );

(таким образом, существует созданный в функции замены в AnsiString afterall),

Править: Добавленный код отмечает, таким образом, мы можем различать различные кавычки

6
ответ дан 14 December 2019 в 09:02
поделиться

Я не использовал AnsiString, но в основном я сделал бы следующее:

  • Обратные одинарные кавычки находки в Вашей строке
  • Обратитесь к левому и правому из текущего индекса одинарной кавычки
  • Если уже нет ни одной кавычки там, вставьте одинарную кавычку после своего текущего индекса
  • Продолжите цикличное выполнение, пока Вы не поразите индекс 0.
1
ответ дан 14 December 2019 в 09:02
поделиться

В Разработчике C++ Вы ищете AnsiQuotedStr функция, в SysUtils. Его инверсия AnsiExtractQuotedStr. Они не методы AnsiString введите себя, потому что им не нужны глубокие знания внутренностей типа.

Что еще более важно, тем не менее, необходимо использовать параметризированные запросы. Если компоненты, которые Вы используете для доступа к базе данных, не поддерживают их, то получают другую библиотеку базы данных. Нет никакой нехватки выбора базы данных, таким образом, можно позволить себе быть требовательными в отношении функций, и параметризированные запросы должны быть около верхней части списка.

Обратите внимание на это несмотря на их имена, AnsiX функции принимают UnicodeString параметры, нет AnsiString, в Delphi и разработчике C++ 2009.

0
ответ дан 14 December 2019 в 09:02
поделиться

Обычный способ сделать это должно использовать подготовленные операторы в противоположность генерации Вашего собственного sql. Ищите Внедрение SQL по одной причине, почему это плохо. В основном, если вообще где-нибудь в Вашем приложении, Вы забываете сгибать кавычки в любом sql операторе, и взломщик может так или иначе отправить значение в это sql оператор, Ваша база данных взламывается. (См. этого xkcd комика для юмористического примера того, что может произойти.)

0
ответ дан 14 December 2019 в 09:02
поделиться

Что происходит, если Вы заменяете им как этот

item = StringReplace( item, "'", "\'", TReplaceFlags() );
0
ответ дан 14 December 2019 в 09:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: