0 / 0 / 0
Регистрация: 30.06.2022
Сообщений: 47
|
||||||
1 | ||||||
Поиск среди всех полей в FireBird на Delphi29.02.2024, 01:10. Показов 668. Ответов 17
Метки нет (Все метки)
Есть таблица с полями key0 INTEGER (PK), service VARCHAR(15), username VARCHAR(15), userpassword VARCHAR(15). Хочу выполнить поиск (выборку, реализовано в качестве живого поиска) по всей таблице. Если искать числовые значения, то всё ок, но если искать символы (кириллица), то ругается на то, что не тот тип данных. Можно ли как-то это осуществить? Поможет ли метод CAST?
Ниже запрос (уже сформированный в SQL.Text):
0
|
29.02.2024, 01:10 | |
Ответы с готовыми решениями:
17
Firebird + Delphi 7. Вывод всех данных из поля Поиск информации по запросу для всех типов полей Поиск максимума среди всех локадьных минимумов Матрица n x m, поиск определенного числа среди всех строк Поиск среди всех массивов такого, у которого значение максимального элемента наибольшее |
0 / 0 / 0
Регистрация: 30.06.2022
Сообщений: 47
|
|
29.02.2024, 07:58 [ТС] | 3 |
ID это key0, забыл сменить имя field, т.е. это цифровое поле, можно ли как то в запросе игнорировать числовые поля, если строка поиска содержит не цифровые символы?
Добавлено через 2 минуты БД в WIN1251.
0
|
29.02.2024, 09:38 | 4 | ||||||||||
запрос сам не делает ничего, соответственно и ничего "игнорировать" не может
какой запрос составили, тот и выполняется а вы, если знаете тип поля, вполне можете не включать его в запрос чтобы проверить, что происходит вам достаточно провести два теста вообще без программирования, просто запустив в IBExpert
если это так, то ваша ошибка должна относиться к какому-то конкретному полю и типу найдите его, а потом уже можно думать
1
|
0 / 0 / 0
Регистрация: 30.06.2022
Сообщений: 47
|
|||||||||||
29.02.2024, 10:21 [ТС] | 5 | ||||||||||
Если выполнить:
Если выполнить:
id имеет Field Type - Integer.
0
|
0 / 0 / 0
Регистрация: 30.06.2022
Сообщений: 47
|
||||||||||||||||||||||||||
29.02.2024, 13:06 [ТС] | 7 | |||||||||||||||||||||||||
На этот запрос уже не ругается:
А если ввести такой:
0
|
29.02.2024, 13:20 | 8 |
Сообщение было отмечено DobryaKaktus как решение
Решение
думаю нужно вдумчиво изучить
на странице https://www.ibase.ru/ibrusfaq/ Ctrl+F PXW_CYRL а потом взять и перевести базу в UTF-8 ))
1
|
0 / 0 / 0
Регистрация: 30.06.2022
Сообщений: 47
|
||||||||||||||||
29.02.2024, 15:07 [ТС] | 9 | |||||||||||||||
Прочёл статью.
Я создал базу в WIN1251, разумеется CHARACTER SET WIN1251 добавляется к объявлению ко всем строковым полям, также WIN1251 не имеет таблицы uppercase. Ок, пробую добавить к одному из полей COLLATE PXW_CYRL:
Код
Undefined name. unsuccessful metadata update. CREATE TABLE TESTCHAR failed. Dynamic SQL Error. SQL error code = -204. COLLATION PXW_CYRL for CHARACTER SET NONE is not defined. ---------------------------------------------------------
Далее создал тестовую таблицу в самом IBExpert: Как видно, я указал charset win1251 и collate pxw_cyrl. Так что запрос можно сформировать так:
0
|
0 / 0 / 0
Регистрация: 30.06.2022
Сообщений: 47
|
|||||||||||
29.02.2024, 18:19 [ТС] | 10 | ||||||||||
По поводу UTF8, я создал БД в UTF8, как нормализовать запрос:
Добавлено через 2 часа 44 минуты Создал таблицу в UTF8. Теперь осталось составить нормальный запрос:
0
|
115 / 99 / 16
Регистрация: 23.05.2015
Сообщений: 563
|
|
29.02.2024, 18:45 | 11 |
Такой вариант не рассматриваете?
И проблемы как не бывало..
0
|
0 / 0 / 0
Регистрация: 30.06.2022
Сообщений: 47
|
|
29.02.2024, 19:24 [ТС] | 12 |
В смысле? Я ведь сейчас уже создал заново, и базу и таблицы в utf8.
0
|
115 / 99 / 16
Регистрация: 23.05.2015
Сообщений: 563
|
||||||
01.03.2024, 11:38 | 13 | |||||
DobryaKaktus, А вы что, в поле id что русские буквы используете вместо цифр?
Добавлено через 31 минуту Если нет, то почему вы пытаетесь искать буквы, там где цифры?
0
|
0 / 0 / 0
Регистрация: 30.06.2022
Сообщений: 47
|
|
01.03.2024, 12:44 [ТС] | 14 |
У меня общее поле поиска для всех столбцов, и например варианты поиска, (все, столбец1(число), столбец2 и т.д), я не хочу ограничивать поле методом NumbersOnly.
0
|
01.03.2024, 15:48 | 15 | |||||||||||||||||||||||||||
Сообщение было отмечено DobryaKaktus как решение
Решение
у нас в детском саду тоже были общие туалеты, но сейчас везде хожу в раздельные
я в первом ответе написал про то, что если вы хотите иметь ID как строку по своим правилам, надо явно кастовать как написано везде, поиск сильно зависит от COLLATE его можно указать прямо в описании поля либо в SELECT
проведите селект на table1 и table2. сравните
теперь другой
замените %васи% на %13% оба запроса на обеих таблах будут давать одинаковый результат, потому что 13 не отличается в кодировках и коллейтах Добавлено через 1 минуту если что, это FB3. База ессн UTF-8
1
|
173 / 23 / 7
Регистрация: 14.04.2019
Сообщений: 181
|
|
02.03.2024, 13:24 | 16 |
А может быть вам вообще без запросов проще будет? Например, делать проверку в OnFilterRecord?
0
|
0 / 0 / 0
Регистрация: 30.06.2022
Сообщений: 47
|
|
02.03.2024, 20:22 [ТС] | 18 |
До этого я кастовал, но неправильно.
Я принцип понял, также я понял почему возникали другие ошибки, в том числе и с win1251. Спасибо.
0
|
02.03.2024, 20:22 | |
02.03.2024, 20:22 | |
Помогаю со студенческими работами здесь
18
Имена полей русскими буквами в firebird Дан каталог книг, реализовать показ всех книг и поиск по каждому из полей Дан каталог книг. Реализовать показ всех книг на экран и поиск по каждому из полей Firebird. Получение имён полей и типов данных Firebird как написать запрос со множеством полей Псевдонимы полей в Firebird сделать русскими буквами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |