我有一个像这样的插入查询
INSERT INTO tbl_LandRigs (Company,Rig,[RigType] ,[DrawWorks],[TopDrive] ) VALUES
(@Company,@Rig,@RigType ,@DrawWorks,@TopDrive )
现在我需要的是,我只想在数据是数字的情况下将数据插入到列TopDrive
中。我想在该列中插入“0”。是否可以在SQL中使用?
答案 0 :(得分:2)
INSERT INTO tbl_LandRigs ([Company], [Rig], [RigType], [DrawWorks], [TopDrive])
VALUES (@Company, @Rig, @RigType, @DrawWorks, CASE WHEN ISNUMERIC(@TopDrive) = 1 THEN @TopDrive ELSE 0 END)
此外,它通常使其他开发人员(或以后自己)更容易与括号和空格的使用保持一致,即使在SQL代码中也是如此。
正如其他人所说,isnumeric
可能会给你一些false positives。如果可能的话,通常最好在输入到达数据库之前对输入进行清理,可能是在这种情况下不使用非类型化数据。只有您知道自己的输入,但如果您预料到问题,请there are some options。
答案 1 :(得分:1)
您可以在SQL Server中调用IsNumeric()函数。虽然小心科学记谱法......
答案 2 :(得分:1)
请看这个:
IF Isnumeric(@TopDrive) = 1
BEGIN
INSERT INTO TBL_LANDRIGS
(COMPANY,
RIG,
[RIGTYPE],
[DRAWWORKS],
[TOPDRIVE])
VALUES (@Company,
@Rig,
@RigType,
@DrawWorks,
@TopDrive )
END
ELSE
BEGIN
INSERT INTO TBL_LANDRIGS
(COMPANY,
RIG,
[RIGTYPE],
[DRAWWORKS],
[TOPDRIVE])
VALUES (@Company,
@Rig,
@RigType,
@DrawWorks,
0 )
END
更新任何帮助
答案 3 :(得分:1)
在插入sql之前,检查一下是否编号link
bool status;
NSScanner *scanner;
NSString *testString;
double result;
scanner = [NSScanner scannerWithString:testString];
status = [scanner scanDouble:&result];
status = status && scanner.scanLocation == string.length;
如果status == YES
,那么该字符串是完全数字的。
或者正如@Dave从这个答案中指出的那样:
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
number = [formatter numberFromString:string];
status = number != nil;
答案 4 :(得分:1)
如果您只检查数字(无小数),请使用like '%[^0-9]%'
,如下所示;
Insert into tbl_LandRigs (Company, Rig, [RigType], [DrawWorks], [TopDrive] )
Values (@Company, @Rig, @RigType, @DrawWorks,
Case when @TopDrive like '%[^0-9]%' then 0 else @TopDrive end )
小心ISNUMERIC(),因为它返回1表示某些不是数字的字符,例如加号(+),减号( - )和有效货币符号,例如美元符号($)。