SQL Server: элементы списка между AA и AM - PullRequest
1 голос
/ 15 июля 2010

Я ищу список всех строк, где поле начинается в диапазоне от AA до AM. Я знаю, что мог бы сделать это, внеся кучу НРАВИТСЯ вместе, но есть ли лучший способ?

Я использую SQL Server, если это что-то меняет.

Спасибо!

Ответы [ 4 ]

6 голосов
/ 15 июля 2010

Используйте НРАВИТСЯ и диапазон

LIKE 'A[A-M]%'

Чувствительность к регистру зависит от сопоставления курса

2 голосов
/ 15 июля 2010

Использовать больше & меньше :

select * from table
where col > 'AA'
and col < 'AM'

Это не включено, если значение col равно 'AA', то оно выигралоне соответствует, но оно будет соответствовать 'AAA'.Измените на больше или равно для соответствия 'AA' (включительно).Если вы также хотите, чтобы все, что начинается с 'AM', добавьте другое или включите 'AM%'.Эти два изменения в запросе выглядят так:

select * from table
where col >= 'AA'
and col < 'AM'
or col like 'AM%'
1 голос
/ 15 июля 2010

Если вы создадите процедуру, которая может обрабатывать переменные, вы сможете многократно выполнять запрос для разных подмножеств таблицы (например, возможно, при следующем запуске вы захотите, чтобы все записи находились между 'DA' и'FZ')

Также - избегайте подстановочных знаков, когда можете.SELECT * ... обычно не является хорошей идеей (вместо этого вы должны перечислить имена полей), а также я заменил другой подстановочный знак (%) в предложении WHERE вместо функции LEFT.

 CREATE PROCEDURE dbo.GETdata
    ( @first nvarchar(2), @last nvarchar(2) )
    AS
    BEGIN
    SET NOCOUNT ON;

    SELECT
       field1,
       field2,
       ...
    FROM 
       dbo.Table 
    WHERE
           LEFT(field1,2) >= @first
       AND LEFT(field1,2) <= @last

    END

Затем запустить хранимую процедуру:

EXECUTE dbo.GETdata 'AA', 'AM'
0 голосов
/ 15 июля 2010

VARCHAR:

where field between 'AA' and 'AM' + CHAR(255)

NVARCHAR:

where field between N'AA' and N'AM' + NCHAR(65535)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...