Я хочу посмотреть столбец для русских чисел, хранящихся в отдельной таблице.Русские числа состоят из строки, состоящей из нескольких букв.
Проблема заключается в том, что при использовании любой строковой функции происходит сбой, поскольку русское число состоит из нескольких слов.
Я хочу проверитьцелая строка не только любой внешний вид.
У меня есть правило, которое проверяет, если любой столбец, как только целое число.здесь я проверяю на русский целое число.Если правило пройдет, оно выдаст ошибку «Содержит только цифры»
Например:
Имя
пять83e094
пять83e094
семьvnala
Русские числа Русские
один
два
три
четыре
пять
шесть
семь
восемь
девять
десять
ноль
сто
тысяча
NULL
NULL
миллиард
NULL
миллион
Каксделать это ??
Решение:
`select n'один' Name into #TEMP union
select n'два' union
select n'три' union
select n'четыре' union
select n'пять' union
select n'шесть' union
select n'семь' union
select n'восемь' union
select n'девять' union
select n'десять' union
select n'ноль' union
select n'сто' union
select n'тысяча' union
select n'NULL' union
select n'NULL' union
select n'миллиард' union
select n'NULL' union
select n'миллион'
select n'пятьвосемь' Country into #TEMP1 union
select n'india ' union
select n'japanone' union
select n'нольмиллиард' union
select n'fourone ' union
select n'europe '
DECLARE
@MAX_CNT NUMERIC,
@MIN_CNT NUMERIC,
@WORD_LEN_CNT NUMERIC,
@WORD_CNT NUMERIC,
@COUNTRY NVARCHAR(50),
@STRING NVARCHAR(50),
@STRING_BUFFER NVARCHAR(50),
@IF_CNT NUMERIC;
SET @MIN_CNT=1;
SET @WORD_CNT=1;
SET @STRING='';
SET @COUNTRY='';
BEGIN
select @MAX_CNT =(select MAX(SEQ) Coun from (
SELECT ROW_NUMBER()OVER(ORDER BY COUNTRY)SEQ,* FROM #TEMP1
)xx)
---------------------WHILE LOOP-----------------------------------------
WHILE(@MIN_CNT<=@MAX_CNT)
BEGIN
--PRINT 1
SELECT @COUNTRY=(select country from (
SELECT ROW_NUMBER()OVER(ORDER BY COUNTRY)SEQ,* FROM #TEMP1
)xx WHERE SEQ=@MIN_CNT )
--print @COUNTRY
--PRINT @COUNTRY
-----------------CHECKING THE WORD WHETHER NUMBER OR NOT---------------------------
SET @WORD_LEN_CNT=LEN(@COUNTRY);
SET @WORD_CNT=1
SET @STRING_BUFFER=''
-----------------SECOND WHILE LOOP-------------------------------------------------
WHILE @WORD_CNT<=@WORD_LEN_CNT
BEGIN
--PRINT 2
SELECT @STRING=SUBSTRING(@COUNTRY,@WORD_CNT,1)
SET @STRING_BUFFER=@STRING_BUFFER+@STRING
SET @WORD_CNT=@WORD_CNT+1
--print @STRING_BUFFER
-----------------CHECKING THE NUMBER PRESENT IN BASE TABLE------------------------
SELECT @IF_CNT=COUNT(1) FROM #TEMP WHERE NAME=@STRING_BUFFER
--print @IF_CNT
IF @IF_CNT=1
BEGIN
SET @STRING_BUFFER=''
END
end
IF @STRING_BUFFER=''
BEGIN
--PRINT 3
--print @COUNtry
PRINT 'Contains Digits'END
SET @MIN_CNT=@MIN_CNT+1;
end
end'