[英]search in a string creditcard numeric value
我想在sql字符串中找到信用卡數值。
例如;
DECLARE @value1 NVARCHAR(MAX) = 'The payment is the place 1234567812345678'
DECLARE @value2 NVARCHAR(MAX) = 'The payment is the place 123456aa7812345678'
DECLARE @value3 NVARCHAR(MAX) = 'The payment1234567812345678is the place'
結果應為:
@value1Result 1234567812345678
@value2Result NULL
@value3Result 1234567812345678
16位數字必須在一起且不能有空格。
如何在sql腳本或函數中執行此操作?
編輯:如果我想找到這2張信用卡值。
@value4 = 'card 1 is : 4034349183539301 and the other one is 3456123485697865'
我應該如何實施腳本?
您可以將PathIndex用作
PATINDEX('%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%', yourStr)
如果結果為0,則不包含其他16位數字。
可根據需要將其與Where
語句或Select
語句一起使用
您可以這樣寫:
SELECT case when Len(LEFT(subsrt, PATINDEX('%[^0-9]%', subsrt + 't') - 1)) = 16
then LEFT(subsrt, PATINDEX('%[^0-9]%', subsrt + 't') - 1)
else ''
end
FROM (
SELECT subsrt = SUBSTRING(string, pos, LEN(string))
FROM (
SELECT string, pos = PATINDEX('%[0-9]%', string)
FROM table1
) d
) t
DECLARE @ value1 NVARCHAR(MAX)='卡片1為:4034349183539301,另一個為3456123485697865'DECLARE @長度INT,@ Count INT,@候選CHAR,@ cNum INT,@結果VARCHAR(16)
SELECT @Count = 1
SELECT @cNum = 0
SELECT @結果=''
SELECT @長度= LEN(@ value1)
@Count <= @長度開始選擇@候選= SUBSTRING(@ value1,@Count,1)
IF @Candidate != ' '
AND ISNUMERIC(@Candidate) = 1
BEGIN
SET @cNum = @cNum + 1
SET @result = @result + @Candidate
END
ELSE
BEGIN
SET @cNum = 1
SET @result = ''
END
IF @cNum > 16
BEGIN
SELECT @result 'Credit Number'
END
SET @Count = @Count + 1
結束
先生,你去那里。
DECLARE
@value3 NVARCHAR(MAX) = 'The payment1234567812345678is the place',
@MaxCount int,
@Count int,
@Numbers NVARCHAR(100)
SELECT @Count = 1
SELECT @Numbers = ''
SELECT @MaxCount = LEN(@value3)
WHILE @Count <= @MaxCount
BEGIN
IF (UNICODE(SUBSTRING(@value3,@Count,1)) >= 48 AND UNICODE(SUBSTRING(@value3,@Count,1)) <=57)
SELECT @Numbers = @Numbers + SUBSTRING(@value3,@Count,1)
SELECT @Count = @Count + 1
END
PRINT @Numbers
如果您打算大量使用它,可以將其作為功能使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.