SQL Server предложение WHERE - PullRequest
       8

SQL Server предложение WHERE

0 голосов
/ 05 февраля 2011

У меня есть база данных SQL Server, и я хочу определить запрос, который будет возвращать результаты, основываясь только на первых двух числах в столбце int.

Что-то вроде:

SELECT * FROM myTable WHERE myIntColumn = 13% 

Таким образом, любые строки с 13, 133, 134 и 1380 будут возвращены

Ответы [ 3 ]

5 голосов
/ 05 февраля 2011

Ничего особенного, просто перейдите на varchar и сопоставление с образцом.

SELECT * FROM myTable
  WHERE CAST(myIntColumn as varchar(10)) LIKE '13%'

Вы можете делить целое число на 10, но это цикл или рекурсия

;WITH cTE AS
(
    SELECT TOP 9
        POWER(10, ROW_NUMBER() OVER (ORDER BY column_id)) AS divisor
    FROM
        sys.columns
)
SELECT
   *
FROM
   myIntColumn
   JOIN
   cTE ON myIntColumn / divisor = 13
4 голосов
/ 05 февраля 2011

Вам нужно преобразовать число в строку:

SELECT * FROM myTable WHERE convert(varchar, myIntColumn) like '13%'

Учтите, что этот запрос, вероятно, не получит выгоды от индекса в поле myIntColumn.

1 голос
/ 06 февраля 2011

Вам не нужно явно приводить столбец (это будет сделано неявно из-за LIKE)

SELECT * FROM myTable WHERE myIntColumn like '13%'

Только для рассмотрения, вы можете использовать математические вычисления для достижения того же результата,быстрее

SELECT * FROM myTable
WHERE myIntColumn/NULLIF(POWER(10,LEN(myIntColumn)-2),0) = 13
...