编写存储过程时,出现“转换成数据类型 int 时失败”错误的解决方法

出现该问天一般都是sql语句拼接的错误,现在给出别人总结好的编写方法。


--先看一下正常的语句
SELECT * FROM tablename WHERE fieldname LIKE '%test' ORDER BY FId
 
--如果想把上面的语句放到字符串中再用exec执行,步骤如下
--#1.把SQL中的'全部替换成''
SELECT * FROM tablename WHERE fieldname LIKE ''%test'' ORDER BY FId
--#2.放到变量中
DECLARE @sql NVARCHAR(max)
SET @sql = 'SELECT * FROM tablename WHERE fieldname LIKE ''%test'' ORDER BY FId'
--#3.替换参数(注意替换的参数必须都是字符类型),替换时直接: '+ @变量名 +',如果变量不是字符型,则转换成字符型(RTRIM(@变量名)或CAST或CONVERT)
DECLARE @变量名 NVARCHAR(10)
SET @变量名 = 'test'
SET @sql = 'SELECT * FROM tablename WHERE fieldname LIKE ''%'+ @变量名 +''' ORDER BY FId'
PRINT @sql


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个JAVA类,可以实现将基本数据类型int转换为中文大写数字的功能。 ```java public class NumberToChinese { private static final String[] CN_UPPER_NUMBER = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; private static final String[] CN_UPPER_UNIT = {"", "拾", "佰", "仟", "万", "亿"}; public static String toChinese(int num) { if (num < 0 || num > 999999999) { throw new IllegalArgumentException("数字必须在0到999999999之间"); } if (num == 0) { return CN_UPPER_NUMBER[0]; } String strNum = String.valueOf(num); int len = strNum.length(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < len; i++) { int n = strNum.charAt(i) - '0'; sb.append(CN_UPPER_NUMBER[n]); if (n != 0) { sb.append(CN_UPPER_UNIT[len - i - 1]); } if (i == len - 5 && len > 5 && strNum.charAt(i + 1) != '0') { sb.append(CN_UPPER_UNIT[4]); } if (i == len - 1) { break; } } return sb.toString(); } } ``` 使用方法: ```java int num = 123456789; String chineseNum = NumberToChinese.toChinese(num); System.out.println(chineseNum); // 一亿二千三百四十五万六千七百八十九 ``` 代码解释: 该类中定义了两个静态数组,分别用于存储中文大写数字和中文数字单位。 `toChinese`方法接收一个int类型的参数,并判断该参数是否在0到999999999之间。如果不是,则抛出异常。 接下来,将数字转换为字符串,并获取其长度。定义一个StringBuilder对象,用于拼接转换后的中文数字。 遍历字符串中的每一个字符,将其转换为数字,并根据该数字在CN_UPPER_NUMBER中找到对应的中文数字。然后,根据该数字在字符串中的位置,找到对应的中文数字单位,并添加到StringBuilder对象中。 当数字长度大于5,需要添加“万”单位。当数字长度大于9,需要添加“亿”单位。因此,需要在适当的位置添加相应的单位。 最后,返回StringBuilder对象中的字符串。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值