Nano Hash - криптовалюты, майнинг, программирование

Как выполнять побитовые арифметические операции в MS-ACCESS

Внутри MSACCESS я хочу использовать относительно простые побитовые операции в предложении WHERE таких запросов:

SELECT *
FROM Table1
WHERE Column1 (some operator) 8 = 0

Это будет:

  • Вернуть строки, в которых Column1 не установлен 4-й бит, например. 0, 1, 2, ..., 7 (у всех чистый 4-й бит) и 16 (это 00010000b)
  • Исключить строки, где Column1 равно 8, 9, 10, ..., 15 и т. д.

PS: побитовые операторы отличаются от логических операций?


Ответы:


1

Если вы можете запустить свой запрос в Режим запроса ANSI-92 (например, изменив режим запроса пользовательского интерфейса Access или подключившись к нему с помощью классической версии ADO или ADO.NET), используйте оператор BAND.

Следующий пример кода выводит это в окно Immediate:

8 AND 7: -1 
8 BAND 7: 0 

В первом случае (И) оба числа рассматриваются как истинные значения, поэтому True AND True дает -1 (истина). Я думаю, что подход BAND — это то, что вам нужно.

Public Sub BitwiseAndQuery()
    'the db engine treats numbers as booleans with AND '
    Debug.Print "8 AND 7: "; _
        CurrentDb.OpenRecordset("SELECT 8 AND 7")(0)

    'ADO includes BAND for bitwise AND '
    Dim rs As Object
    Set rs = CreateObject("ADODB.Recordset")
    rs.Open "SELECT (8 BAND 7)", CurrentProject.Connection
    Debug.Print "8 BAND 7:"; rs(0)
    rs.Close
    Set rs = Nothing
End Sub
02.02.2012
  • Спасибо, я проверю. Применяется ли то же самое при использовании ADO.NET? 03.02.2012
  • Я бы предположил, что да. Но я не занимаюсь ADO.NET, поэтому мое предположение бесполезно. :-) 03.02.2012
  • Другие побитовые операторы как BOR и BXOR. 03.02.2012
  • Да, сработало сразу, когда я запросил базу данных MS-Access через ADO.Net. 03.02.2012

  • 2

    вы могли:

    WHERE (((column\(2^b)) mod 2) = 1)
    

    редактировать: (где b - конкретный бит для проверки)

    Функция ИЛИ недоступна в Access, если не установлен режим ANSI.

    02.02.2012
  • WHERE (int([имя_столбца]/(2^[проверка нулевого бита]) mod 2 = 1) 25.10.2012

  • 3

    В VBA вы можете применять логические операторы к числам для выполнения побитовых операций.

    (13 AND 8) = 0
    

    Однако в SQL это не работает. Однако вы можете написать функцию VBA, которую вы вызываете внутри запроса.

    02.02.2012
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

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

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..