Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Най-бързият начин да проверите дали знакът е цифра?

Ще бъда много изненадан, ако някога успеете да откриете разлика между WHERE col LIKE '[0-9]' и всякакви други методи, които измислите. Но съм съгласен с Денис, сложете това във функция, така че да използвате една и съща проверка последователно в целия си код (или поне, ако избягвате UDF поради големи сканирания и т.н., поставете маркер в кода си, който ще улесняват промяната в широк мащаб по-късно).

Въпреки това, вие със сигурност ще видите повече удар на производителността само чрез използване на скаларна UDF, отколкото метода, който използвате за анализиране във функцията. Наистина трябва да сравните производителността на UDF спрямо правенето на това вградено чрез CASE . напр.

SELECT Postal = CONVERT(INT, CASE WHEN SUBSTRING(postal,2,1) LIKE '[0-9]' 
       THEN SUBSTRING(postal, 2,1) END)
FROM ...

Това ще доведе до NULL ако знакът не е числов.

Ако се занимавате само с проверка на локални променливи, наистина няма да има значение какъв метод за анализиране използвате и е по-добре да съсредоточите усилията си за оптимизация другаде.

РЕДАКТИРАНЕ добавяне на предложение към демонстрирания JOIN клауза. Това потенциално ще доведе до по-малко постоянни сканирания, но е много по-четливо (много по-малко извиквания на поднизове и т.н.):

;WITH v AS 
(
    SELECT /* other columns, */ patientPostal, 
      ss = SUBSTRING(v.patientPostal,2,1),
      FROM [whatever table is aliased v in current query]
)
SELECT /* column list */
FROM [whatever table is aliased z in current query]
INNER JOIN v ON z.postal = CONVERT(INT, CASE 
    WHEN v.ss = '0' THEN ss
    WHEN v.ss LIKE '[1-9]' THEN LEFT(v.patientPostal, 3)
END);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да избера само част от огромен двоичен файл (файл)?

  2. MONTH() Примери в SQL Server (T-SQL)

  3. Как да вмъкнете стойности в колона IDENTITY в SQL Server

  4. Използването на SqlParameter в клаузата LIKE на SQL не работи

  5. условие if в заявка за актуализиране на sql сървър