bir sp icinde varchar tanımlı bir degiskenin icinde (giris parametresi) alfanumeric karakterlerin olup olmadıgını nasıl ogrenirim.
string numeric ise ayrı bir islem alfanumerik ise daha farklı bir islem yaptırmam lazım.
stringin tum karakterlerini bir dongu ile
select count(*) from rdb$database
where :BIRKARAKTER in ('1','2','3','4','5','6','7','8','9','0')
bu sekilde kontrol etmekten daha pratik bir cozum var mıdır?
icinde alfanumerik karakter gecen stringi bulma
icinde alfanumerik karakter gecen stringi bulma
ÜŞENME,ERTELEME,VAZGEÇME
merhaba, karakterin rakam olup olmadığını anlamanın sizin yöneteme göre daha az karmaşık olanı şöyle olabilir,
gibi..
iyi çalışmalar.
Kod: Tümünü seç
IF (KARAKTER<'A') and (KARAKTER>'0') THEN .... BU bir SaYII...
iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Bir regex UDF function'ı kullanabilirsin.
regex'i bu şekilde tanımladıktan sonra dönüş değerini kontrol edersin.
Kod: Tümünü seç
regex=/[0-9A-Za-z]*/;
@vkamadan ın ifadesine benzer şekilde
gibi bir ifadeylede olabilir, eşitliğn sol tarafı lower sağ tarafı upper olunca
numericlerde 1 döner.
Kod: Tümünü seç
select 1 as deger from RDB$DATABASE where '1' = upper('1')
numericlerde 1 döner.
saolun, bende su sekilde numaralarıda sayısal kabul edecegim icin
(12345-12348) kendim soyle bir procedure yazdım is goruyor simdilik,
(12345-12348) kendim soyle bir procedure yazdım is goruyor simdilik,
Kod: Tümünü seç
CREATE PROCEDURE P_IS_ALPHANUMERIC (
INPUTSTR VARCHAR(255))
RETURNS (
Q SMALLINT)
AS
DECLARE VARIABLE I INTEGER;
DECLARE VARIABLE L INTEGER;
DECLARE VARIABLE CH SMALLINT;
begin
q=0;i=1;l=strlen(:INPUTSTR)+1;
while(i<l)do
begin
ch=ord(substr(:INPUTSTR,i,1));
if ((not (chr(ch) in ('-','/',';') )) and ((ch<48) or (ch>57))) then--alphanumeric
begin
q=1;
suspend;
exit;
end
i=i+1;
end
suspend;
end
ÜŞENME,ERTELEME,VAZGEÇME