我正在尝试使用SQL匹配正则表达式,我只能返回其AccountNumber为11位的帐户的详细信息。我使用了以下内容,但它似乎不起作用:
select New_New_AccountNumber, New_PremiseNo, New_FirstName, New_LastName
from AccountExtensionBase
where New_AccountNumber like '^\d{11}$'
and New_AccountStage = 7
order by New_FirstName
答案 0 :(得分:4)
SQL Server 2008不支持使用LIKE
或其他任何内容的正则表达式,它仅使用简单模式匹配通配符。
简单选项;
select * from t where f like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
答案 1 :(得分:3)
正则表达式不起作用,但可以简单地将其替换为ISNUMERIC和LEN,如下所示:
with open(filename, 'rb+') as f:
while True:
line = f.readline()
if not line: break
if '=2' in line:
f.seek(-len(line),1)
f.write(line.split('=2')[0]+'=6')
f.flush()
答案 2 :(得分:2)
这类似于where len(New_AccountNumber) = 11 and
New_AccountNumber not like [^0-9]
,但它只允许数字:
<div class="wrap>
<iframe src="../path"></iframe>
</div>
.wrap {
overflow: auto;
}
iframe, object, embed {
min-height: 100%;
min-width: 100%;
overflow: auto;
}
即长度为11,不包含非数字字符。
答案 3 :(得分:0)
我认为这可能会有所帮助
select New_New_AccountNumber, New_PremiseNo, New_FirstName, New_LastName
from AccountExtensionBase
where New_AccountNumber REGEXP '^[0-9]{11}$'
and New_AccountStage = 7
order by New_FirstName
上面使用MySQL的例子,如果有人需要它可以使用。
这适用于SQL Server,我已经使用2012版测试过,对于不同的版本(2005,2008,...),它可能需要一些更正。
select New_New_AccountNumber, New_PremiseNo, New_FirstName, New_LastName
from AccountExtensionBase
where New_AccountNumber not like '%.%' and ISNUMERIC(New_AccountNumber)=1 and LEN(New_AccountNumber)=11
and New_AccountStage = 7
order by New_FirstName