SQL Server/T-SQL/String Functions/Regular Expressions

Материал из SQL эксперт
Перейти к: навигация, поиск

Any of the wildcard characters (%, _ [, ], or ?) enclosed in square brackets stand for themselves

   <source lang="sql">

1> CREATE TABLE project (project_no CHAR(4) NOT NULL, 2> project_name CHAR(15) NOT NULL, 3> budget FLOAT NULL) 4> GO 1> insert into project values ("p1", "Search Engine", 120000.00) 2> insert into project values ("p2", "Programming", 95000.00) 3> insert into project values ("p3", "SQL", 186500.00) 4> GO (1 rows affected) (1 rows affected) (1 rows affected) 1> 2> -- Any of the wildcard characters (%, _ [, ], or ?) enclosed in square brackets stand for themselves. 3> 4> SELECT project_no, project_name 5> FROM project 6> WHERE project_name LIKE "%[_]%" 7> GO project_no project_name


---------------

(0 rows affected) 1> drop table project 2> GO 1>

      </source>
   
  


Begin with a character in the range C through F

   <source lang="sql">

1> CREATE TABLE department(dept_no CHAR(4) NOT NULL, 2> dept_name CHAR(25) NOT NULL, 3> location CHAR(30) NULL) 4> GO 1> insert into department values ("d1", "developer", "Dallas") 2> insert into department values ("d2", "tester", "Seattle") 3> insert into department values ("d3", "marketing", "Dallas") 4> GO (1 rows affected) (1 rows affected) (1 rows affected) 1> -- Begin with a character in the range C through F. 2> 3> SELECT * FROM department WHERE location LIKE "[C-F]%" 4> GO dept_no dept_name location


------------------------- ------------------------------

d1 developer Dallas d3 marketing Dallas (2 rows affected) 1> drop table department 2> GO 1>

      </source>
   
  


"%" is for any length of letters

   <source lang="sql">

1> CREATE TABLE employee (emp_no INTEGER NOT NULL, 2> emp_fname CHAR(20) NOT NULL, 3> emp_lname CHAR(20) NOT NULL, 4> dept_no CHAR(4) NULL) 5> GO 1> 2> insert into employee values(1, "Matthew", "Smith", "d3") 3> insert into employee values(2, "Ann", "Jones", "d3") 4> insert into employee values(3, "John", "Barrimore","d1") 5> insert into employee values(4, "James", "James", "d2") 6> insert into employee values(5, "Elsa", "Bertoni", "d2") 7> insert into employee values(6, "Elke", "Hansel", "d2") 8> insert into employee values(7, "Sybill", "Moser", "d1") 9> GO (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) 1> 2> select * from employee 3> GO emp_no emp_fname emp_lname dept_no


-------------------- -------------------- -------
         1 Matthew              Smith                d3
         2 Ann                  Jones                d3
         3 John                 Barrimore            d1
         4 James                James                d2
         5 Elsa                 Bertoni              d2
         6 Elke                 Hansel               d2
         7 Sybill               Moser                d1

(7 rows affected) 1> 2> 3> -- LIKE Operator 4> 5> SELECT emp_fname, emp_lname, emp_no FROM employee WHERE emp_lname LIKE "J%" 6> GO emp_fname emp_lname emp_no


-------------------- -----------

Ann Jones 2 James James 4 (2 rows affected) 1> drop table employee 2> GO 1>

      </source>
   
  


"_" is for one letter

   <source lang="sql">

1> CREATE TABLE employee (emp_no INTEGER NOT NULL, 2> emp_fname CHAR(20) NOT NULL, 3> emp_lname CHAR(20) NOT NULL, 4> dept_no CHAR(4) NULL) 5> GO 1> insert into employee values(1, "Matthew", "Smith", "d3") 2> insert into employee values(2, "Ann", "Jones", "d3") 3> insert into employee values(3, "John", "Barrimore","d1") 4> insert into employee values(4, "James", "James", "d2") 5> insert into employee values(5, "Elsa", "Bertoni", "d2") 6> insert into employee values(6, "Elke", "Hansel", "d2") 7> insert into employee values(7, "Sybill", "Moser", "d1") 8> GO (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) 1> select * from employee 2> GO emp_no emp_fname emp_lname dept_no


-------------------- -------------------- -------
         1 Matthew              Smith                d3
         2 Ann                  Jones                d3
         3 John                 Barrimore            d1
         4 James                James                d2
         5 Elsa                 Bertoni              d2
         6 Elke                 Hansel               d2
         7 Sybill               Moser                d1

(7 rows affected) 1> 2> SELECT emp_fname, emp_lname, emp_no FROM employee WHERE emp_fname LIKE "_a%" 3> GO emp_fname emp_lname emp_no


-------------------- -----------

Matthew Smith 1 James James 4 (2 rows affected) 1> drop table employee 2> GO 1>

      </source>
   
  


^ specifies the negation of a range or a list of characters

   <source lang="sql">

1> CREATE TABLE employee (emp_no INTEGER NOT NULL, 2> emp_fname CHAR(20) NOT NULL, 3> emp_lname CHAR(20) NOT NULL, 4> dept_no CHAR(4) NULL) 5> GO 1> insert into employee values(1, "Matthew", "Smith", "d3") 2> insert into employee values(2, "Ann", "Jones", "d3") 3> insert into employee values(3, "John", "Barrimore","d1") 4> insert into employee values(4, "James", "James", "d2") 5> insert into employee values(5, "Elsa", "Bertoni", "d2") 6> insert into employee values(6, "Elke", "Hansel", "d2") 7> insert into employee values(7, "Sybill", "Moser", "d1") 8> GO (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) 1> select * from employee 2> GO emp_no emp_fname emp_lname dept_no


-------------------- -------------------- -------
         1 Matthew              Smith                d3
         2 Ann                  Jones                d3
         3 John                 Barrimore            d1
         4 James                James                d2
         5 Elsa                 Bertoni              d2
         6 Elke                 Hansel               d2
         7 Sybill               Moser                d1

(7 rows affected) 1> -- ^ specifies the negation of a range or a list of characters 2> 3> SELECT emp_no, emp_fname, emp_lname FROM employee 4> WHERE emp_lname LIKE "[^J-O]%" 5> AND emp_fname LIKE "[^EZ]%" 6> GO emp_no emp_fname emp_lname


-------------------- --------------------
         1 Matthew              Smith
         3 John                 Barrimore

(2 rows affected) 1> drop table employee 2> GO 1> 2>

      </source>