Ricerca nel sito web

SQL tra, MySQL tra date, non tra


L'operatore SQL BETWEEN viene utilizzato insieme agli operatori SQL IN utilizzati in modo sequenziale. I valori sono definiti come parte dell'intervallo BETWEEN sono inclusivi, ovvero i valori menzionati nell'intervallo sono inclusi nei valori iniziale e finale. Parliamo in dettaglio dell'operatore BETWEEN. Come accennato in precedenza, l'operatore BETWEEN può essere utilizzato insieme a valore numerico, valore di testo e data. Discuteremo tutti e tre in dettaglio di seguito.

Sintassi tra SQL

SELECT Column(s) FROM table_name WHERE column BETWEEN value1 AND value2;

Usando la sintassi sopra menzionata, possiamo definire i valori come parte dell'operatore BETWEEN. Inoltre, la sintassi menzionata sopra rimane la stessa per l'utilizzo con un valore numerico, un valore di testo e un valore di data.

Operatore SQL BETWEEN per il valore numerico

Capiremo la suddetta sintassi in modo più dettagliato attraverso alcuni esempi per valore numerico. Consideriamo la seguente tabella Student come scopo esemplificativo.

RollNo StudentName StudentGender StudentAge StudentPercent AdmissionDate
1 George M 14 85 2018-01-01
2 Monica F 12 88 2018-01-31
3 Jessica F 13 84 2018-01-15
4 Tom M 11 78 2017-12-15

Sto usando il database MySQL ed ecco lo script per creare e inserire record di esempio nella tabella Student.

CREATE TABLE `Student` (
  `rollno` int(11) unsigned NOT NULL,
  `studentname` varchar(20) DEFAULT NULL,
  `studentgender` varchar(5) DEFAULT NULL,
  `studentage` int(3) DEFAULT NULL,
  `studentpercent` int(3) DEFAULT NULL,
  `admissiondate` date DEFAULT NULL,
  PRIMARY KEY (`rollno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `Student` (`rollno`, `studentname`, `studentgender`, `studentage`, `studentpercent`, `admissiondate`)
VALUES
	(1, 'George', 'M', 14, 85, '2018-01-01'),
	(2, 'Monica', 'F', 12, 88, '2018-01-31'),
	(3, 'Jessica', 'F', 13, 84, '2018-01-15'),
	(4, 'Tom', 'M', 11, 78, '2017-12-15');

Scenario: ottieni la percentuale di studenti la cui età è compresa tra 11 e 13 anni.

SELECT StudentPercent FROM Student WHERE StudentAge BETWEEN 11 AND 13;

Produzione:

StudentPercent
88
84
78

Operatore SQL NOT BETWEEN per valore numerico

L'operatore SQL NOT BETWEEN viene utilizzato per ottenere i valori come parte del set di risultati che è al di fuori dell'intervallo specificato dall'operatore BETWEEN. Scenario: ottieni la percentuale di studenti la cui età non è compresa tra 11 e 13 anni.

SELECT StudentPercent FROM Student WHERE StudentAge NOT BETWEEN 11 AND 13;

Produzione:

StudentPercent
85

Operatore SQL BETWEEN per il valore di testo

Scenario: ottieni RollNo, StudentName e StudentAge dove StudentName è tra George e Jessica.

SELECT RollNo, StudentName, StudentAge FROM Student WHERE StudentName BETWEEN 'George' AND 'Jessica';

Produzione:

RollNo StudentName StudentAge
1 George 14
3 Jessica 13

Operatore SQL NOT BETWEEN per valore di testo

Scenario: ottieni RollNo, StudentName e StudentAge dove StudentName non è tra George e Jessica.

SELECT RollNo, StudentName, StudentAge FROM Student WHERE StudentName NOT BETWEEN 'George' AND 'Jessica';

Produzione:

RollNo StudentName StudentAge
2 Monica 12
4 Tom 11

Operatore SQL BETWEEN per il valore Data

Scenario: ottieni l'età degli studenti la cui ammissione è compresa tra il 1 gennaio 2018 e il 31 gennaio 2018.

SELECT StudentAge FROM Student WHERE admissiondate BETWEEN str_to_date('2018-01-01', '%Y-%m-%d') AND '2018-01-31';

Produzione:

StudentAge
14
12
13

Operatore SQL NOT BETWEEN per il valore della data

Scenario: ottieni l'età degli studenti la cui ammissione non è compresa tra il 1 gennaio 2018 e il 31 gennaio 2018.

SELECT StudentAge FROM Student WHERE admissiondate NOT BETWEEN str_to_date('2018-01-01', '%Y-%m-%d') AND '2018-01-31';

Produzione:

StudentAge
11

MULTIPLI TRA operatori

Possiamo usare anche multipli tra operatori. La sua sintassi è:

SELECT Column(s) FROM table_name WHERE 
column_name BETWEEN value1 AND value2 
AND 
column_name BETWEEN value3 and value4 
... 
AND 
BETWEEN column_name BETWEEN valueN and valueM;

Usando la sintassi sopra menzionata, possiamo usare più operatori BETWEEN. Scenario: ottieni il nome dello studente con un'età compresa tra 10 e 13 anni e voti tra l'80 e l'85 percentuale.

SELECT StudentName FROM Student WHERE 
StudentAge BETWEEN 10 AND 13 
AND
StudentPercent BETWEEN 80 AND 85;