Как использовать КАК условие в SQL с числовым полем?

Просто предложение, я не эксперт по этому, но использовал WebBrowser много в предыдущих приложениях, но почему Вы не пишете функцию для ожидания 1 секунды прежде, чем попытаться передать браузер что-нибудь и всегда проверять readystate заранее также. Мог бы замедлить его немного, но это должно сделать его пуленепробиваемым.:)

10
задан p.campbell 11 July 2009 в 01:02
поделиться

5 ответов

You can't do a wildcard on a number, however, if you really need to, you can convert the number to a varchar and then perform the wildcard match.

eg.

SELECT * FROM emp WHERE CONVERT(varchar(20), emp_id) LIKE '1%'
8
ответ дан 3 December 2019 в 16:10
поделиться

В синтаксисе SQL ядра СУБД Access для использования подстановочного знака % ЛИБО необходимо использовать режим запроса ANSI-92 ИЛИ использовать ключевое слово ALIKE вместо ключевого слова LIKE .

Подробнее о режиме запроса ANSI-92 см. О режиме запроса ANSI SQL (MDB) в справке Access2003 (то же самое относится к ACE в Access2007, но они почему-то удалили тему из справки Access2007). Если вы делаете это в коде, вам нужно будет использовать OLE DB, например, ADO classic в VBA.

Для ключевого слова ALIKE ... вы не найдете много. Это одна из официально недокументированных функций, а это означает, что существует риск того, что она может быть удалена из будущей версии ядра базы данных Access. Лично я d взять на себя этот риск из-за необходимости явно кодировать как режим запроса ANSI-89, так и режим запроса ANSI-92, как это необходимо для правил проверки и ограничений CHECK (см. пример ниже). Кодирование для обоих может быть выполнено, но это более длинный и сложный процесс, чтобы сделать правильный выбор, т. Е. Более непосредственный риск, если вы ошибетесь.

Вот и ответ. Теперь о «решении» ...

Очевидно, что если вам нужно выполнить такой запрос на emp_id, тогда домен неправильный, т.е. это не должно быть числовое поле.

Лечите болезнь: измените схему чтобы сделать это текстовым полем, добавив правило домена, гарантирующее, что оно содержит только числовые символы, например,

CHECK (emp_id NOT LIKE '%[^0-9]%')

EDIT теперь добавлен тег «Jet». Приведенное выше ограничение CHECK необходимо переписать, поскольку ядро ​​базы данных Access имеет собственный синтаксис: замените символ ^ на ! . Кроме того, чтобы сделать это совместимым как с режимом запроса ANSI-89, так и с режимом запроса ANSI-92, используйте ключевое слово ALIKE, т.е.

CHECK (emp_id NOT ALIKE '%[!0-9]%')
3
ответ дан 3 December 2019 в 16:10
поделиться

Нет, вы не можете использовать LIKE для числовых полей. Попробуйте использовать <, > или = , > = , <= ;)

Если вы Если вы хотите найти в числовом поле такие вещи, как "начиная с 12" или что-то подобное, ваш дизайн не соответствует вашим потребностям.

3
ответ дан 3 December 2019 в 16:10
поделиться

In Access you can concatenate the numeric field with an empty string to coerce it into a string that you can compare using LIKE:

select * from emp where emp_id & '' like '123*'

Also note that Access uses * not % as the wildcard character. See: Like Operator (Microsoft Access SQL).

8
ответ дан 3 December 2019 в 16:10
поделиться

Используйте функцию cast или convert в поле emp_id , и вы можете сравнить с , например .

1
ответ дан 3 December 2019 в 16:10
поделиться
Другие вопросы по тегам:

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