데이터 베이스 MySQL 튜토리얼 数据库字段复用的基本原理与示例_MySQL

数据库字段复用的基本原理与示例_MySQL

Jun 01, 2016 pm 01:50 PM
바이너리 사용

bitsCN.com

  一、逻辑代数基础:

  1,数字用二进制表示,所有可能出现的数只有0和1两个。

  2,基本运算只有“与”、“或”、“非”三种。

  与运算定义为:(用 & 表示与运算)

  0 & 0 = 0

  0 & 1 = 0

  1 & 0 = 0

  1 & 1 = 1

  可以简单理解为:只要有一个0,结果就是0,和乘法类似。

  或运算定义为:(用 | 表示与运算)

  0 | 0 = 0

  0 | 1 = 1

  1 | 0 = 1

  1 | 1 = 1

  可以简单理解为:只要有一个1,结果就是1,和加法类似。

  二、逻辑运算示例:

  01111010101010101111111111111111 & 1100000 = 1100000

  一般可以理解为:

  如果要获取一个数字某N位的数值,只需要将这个数字与2的N-1次方(掩码)进行与运算即可。

  三、数据库字段定义:

  以数据表 binary_sample为例:

  create table binary_sample(

  uid int unsigned not null,

  status int unsigned not null default 0,

  primary key(uid),

  key i_s(status)

  )engine=innodb;

  status字段定义:

  status字段数据类型为32bit的整数,为了尽可能的存储多个属性,我们将其进行如下定义:

  以下所有“位”的描述顺序按照从低到高(从右到左)顺序表示。

  0-2位表示用户注册状态:

  000 表示新注册未被批准

  001 表示注册被批准

  010 表示位高级用户

  011 表示管理员

  100 表示超级管理员

  101 保留

  110 保留

  111 掩码

  3-5位用户性别:

  000 表示性别不确定

  001 表示性别为男

  010 表示性别为女

  011 保留

  100 保留

  101 保留

  110 保留

  111 掩码

  如果我们要查询所有 男用户 则:

  select * from binary_sample where status & b'111000' = b'001000';

  如果我们要查询所有 管理员用户 则:

  select * from binary_sample where status & b'111' = b'011';

  如果我们要查询所有 男管理员用户 则:

  select * from binary_sample where status & b'111111' = b'001011';

  如果我们要查询所有 非 新注册未被批准用户 则:

  select * from binary_sample where status & b'111' != b'000';

  四,使用PHP程序进行此类计算:

  define("USER_NEW",0);//000

  define("USER_NORMAL",1);//001

  define("USER_ADVANCE",2);//010

  define("USER_MANAGE",3);//011

  define("USER_SUPER",4);//100

  define("USER_MASK",7);//111

  define("GENDER_UNKNOWN",0);// 000000

  define("GENDER_MALE",8);// 001000

  define("GENDER_FEMALE",9);// 010000

  define("GENDER_MASK",56);// 111000

  如果我们要查询所有 男用户 则:

  $status=GENDER_MALE;

  $mask=GENDER_MASK;

  $sql="select * from binary_sample where status & ${mask}' = ${status}";

  如果我们要查询所有 管理员用户 则:

  $status=USER_MANAGE;

  $mask=USER_MASK;

  $sql="select * from binary_sample where status & ${mask}' = ${status}";

  如果我们要查询所有 男管理员用户 则:

  $status=GENDER_MALE & USER_MANAGE;

  $mask = GENDER_MASK & GENDER_MASK;

  $sql="select * from binary_sample where status & ${mask}' = ${status}";

  如果我们要查询所有 非 新注册未被批准用户 则:

  $status = USER_NEW;

  $mask = USER_MASK;

  $sql="select * from binary_sample where status & ${mask} != ${status}";

  依此类推,只要定义好每个值的含义,查询基本上就定了。

bitsCN.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

이진 산술을 계산하는 방법 이진 산술을 계산하는 방법 Jan 19, 2024 pm 04:38 PM

이진 연산은 이진수를 기반으로 하는 연산 방법으로 덧셈, 뺄셈, 곱셈, 나눗셈이 포함됩니다. 기본 연산 외에도 이진 연산에는 논리 연산, 변위 연산 및 기타 연산이 포함됩니다. 논리 연산에는 AND, OR, NOT 등의 연산이 포함되며 변위 연산에는 왼쪽 시프트 연산과 오른쪽 시프트 연산이 포함됩니다. 이러한 연산에는 해당 규칙과 피연산자 요구 사항이 있습니다.

C 언어를 사용하여 2진수를 16진수로 변환하는 방법은 무엇입니까? C 언어를 사용하여 2진수를 16진수로 변환하는 방법은 무엇입니까? Sep 01, 2023 pm 06:57 PM

이진수는 1과 0으로 표현됩니다. 16비트 16진수 체계는 2진수 표현을 16진수로 변환하기 위해 {0,1,2,3…..9,A(10),B(11),…F(15)} 비트를 나타냅니다. 문자열 ID는 최하위 쪽부터 시작하여 니블이라고 하는 4비트 청크로 그룹화됩니다. 각 블록은 해당하는 16진수로 대체됩니다. 16진수와 2진수 표현을 명확하게 이해하기 위해 예를 살펴보겠습니다. 001111100101101100011101 3 E 5 B&nb

EDVAC의 두 가지 주요 개선 사항은 무엇입니까? EDVAC의 두 가지 주요 개선 사항은 무엇입니까? Mar 02, 2023 pm 02:58 PM

EDVAC에는 두 가지 주요 개선 사항이 있습니다. 하나는 바이너리를 사용하는 것이고, 다른 하나는 저장된 프로그램을 완성하는 것입니다. 이는 하나의 프로그램 명령에서 다음 명령으로 자동으로 진행할 수 있으며 해당 작업은 명령을 통해 자동으로 완료될 수 있습니다. "명령어"란 기계의 메모리 장치에 코드 형태로 입력되는 데이터와 프로그램을 포함합니다. 즉, 데이터를 저장하는 메모리 장치와 동일한 메모리 장치를 사용하여 작업을 수행하는 명령을 저장하는 새로운 개념입니다. - 저장된 프로그램이라고 합니다.

Golang에서 바이너리 파일을 읽는 방법은 무엇입니까? Golang에서 바이너리 파일을 읽는 방법은 무엇입니까? Mar 21, 2024 am 08:27 AM

Golang에서 바이너리 파일을 읽는 방법은 무엇입니까? 바이너리 파일은 컴퓨터가 인식하고 처리할 수 있는 데이터가 포함된 바이너리 형식으로 저장된 파일입니다. Golang에서는 몇 가지 방법을 사용하여 바이너리 파일을 읽고 이를 원하는 데이터 형식으로 구문 분석할 수 있습니다. 다음은 Golang에서 바이너리 파일을 읽는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 먼저, 파일 객체를 반환하는 os 패키지의 Open 함수를 사용하여 바이너리 파일을 열어야 합니다. 그럼 우리는 만들 수 있습니다

Golang이 바이너리 파일을 처리할 수 있나요? Golang이 바이너리 파일을 처리할 수 있나요? Mar 20, 2024 pm 04:36 PM

Golang이 바이너리 파일을 처리할 수 있나요? Go 언어에서는 바이너리 파일을 처리하는 것이 매우 일반적이고 편리합니다. 내장된 패키지와 메소드를 사용하면 바이너리 파일을 쉽게 읽고, 쓰고, 조작할 수 있습니다. 이 문서에서는 Go에서 바이너리 파일을 처리하는 방법을 설명하고 구체적인 코드 예제를 제공합니다. 바이너리 파일 읽기 바이너리 파일을 읽으려면 먼저 파일을 열고 해당 파일 객체를 생성해야 합니다. 그런 다음 Read 메서드를 사용하여 파일에서 데이터를 읽고 바이트 단위로 저장할 수 있습니다.

Go 언어에서 16진수를 2진수로 변환하는 방법을 쉽게 배웁니다. Go 언어에서 16진수를 2진수로 변환하는 방법을 쉽게 배웁니다. Mar 15, 2024 pm 04:45 PM

제목: Go 언어에서 16진수를 2진수로 변환하는 방법을 쉽게 배웁니다. 컴퓨터 프로그래밍에서는 서로 다른 진수 간의 변환 작업이 필요한 경우가 많습니다. 그중에서도 16진수와 2진수 간의 변환이 비교적 일반적입니다. Go 언어에서는 몇 가지 간단한 코드 예제를 통해 16진수를 2진수로 변환할 수 있습니다. 먼저 16진수와 2진수의 표현방법을 살펴보자. 16진수는 숫자를 표현하는 방식으로 0~9, A~F를 사용하여 1을 표현합니다.

C++에서는 이진수의 한 비트를 제거하여 최대값을 얻습니다. C++에서는 이진수의 한 비트를 제거하여 최대값을 얻습니다. Sep 17, 2023 pm 03:53 PM

이진수가 주어진 문제에 대해 토론하십시오. 나머지 숫자가 다음과 같은 다른 모든 옵션 중에서 최대값이 되도록 약간 제거해야 합니다.

더 나은 결과를 얻으려면 어떤 마우스 링커 소프트웨어가 권장됩니까? 더 나은 결과를 얻으려면 어떤 마우스 링커 소프트웨어가 권장됩니까? Jan 02, 2024 pm 07:54 PM

어떤 마우스 포인트 커넥터가 더 좋나요? 포인트 커넥터로는 AutoClicker를 사용하는 것이 좋습니다. 자동으로 마우스를 클릭할 수 있도록 도와주는 간단하고 사용하기 쉬운 마우스 연결 소프트웨어입니다. 그 이유는 AutoClicker에는 다음과 같은 장점이 있기 때문입니다. 1. 인터페이스가 간단하고 직관적이며 조작이 간단하고 초보자가 사용하기에 적합합니다. 2. 사용자 정의 클릭 간격 시간을 지원하고 필요에 따라 클릭 속도를 조정할 수 있습니다. 3. 다양한 요구 사항에 맞게 클릭 수 또는 연속 클릭 수를 설정할 수 있습니다. 4. 무료 소프트웨어이므로 구매 비용을 지불할 필요가 없습니다. 도트 커넥터를 사용하려면 AutoClicker를 사용해 보세요. Sniper 2에서 Logitech 마우스 매크로를 설정하는 방법: 다음은 Sniper 2에서 Logitech 마우스 매크로를 설정하는 단계입니다. 1. 먼저 Logitech을 구입하여 설치했는지 확인하세요.

See all articles