以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]SQLReplaceFor中的表达式  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=191447)

--  作者:jyh7081
--  发布时间:2024/4/17 8:49:00
--  [求助]SQLReplaceFor中的表达式
蓝老师好!
下面的代码,是想更新[正确率历史]列为空的值,用本行的[生成日期]、[平均正确率]、[正值正确率]、[负值正确率]的列值拼接,拼接成“2024-04-15(63.89/86.67/47.62)”样的格式~
运行代码提示“类型 生成日期 不是已定义的系统类型。”,这种情况应该怎样修改?
谢谢!

Dim cnt As Integer
cnt = DataTables("趋势汇总").SQLReplaceFor("正确率历史","Convert([生成日期],\'System.String\') & \'(\' & [平均正确率] & \'/\' & [正值正确率] & \'/\' & [负值正确率] & \')\'", "正确率历史 is null", True)
Output.Show("合计更新了" & cnt & "条记录的折扣!")

--  作者:有点蓝
--  发布时间:2024/4/17 9:03:00
--  
什么数据库?
--  作者:jyh7081
--  发布时间:2024/4/17 9:13:00
--  
SQLserver


--  作者:有点蓝
--  发布时间:2024/4/17 9:57:00
--  
DataTables("趋势汇总").SQLReplaceFor("正确率历史","Convert(nvarchar(10),[生成日期],120) + \'(\' + [平均正确率] + \'/\' + [正值正确率] + \'/\' + [负值正确率] + \')\'", "正确率历史 is null", True)

不同数据库的函数用法不一样的:https://www.baidu.com/s?wd=SqlServer%20Convert

--  作者:jyh7081
--  发布时间:2024/4/17 10:11:00
--  
提示:

图片点击可在新窗口打开查看此主题相关图片如下:截屏图片 (3).jpg
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2024/4/17 10:40:00
--  
到后台数据库,里看上面哪些列是ntext,改为nvarchar(max).

另外看看那些是数值列,也要转换为字符串:https://www.baidu.com/s?wd=SqlServer%20Convert

--  作者:jyh7081
--  发布时间:2024/4/17 11:57:00
--  
好了~  谢谢!

Dim cnt As Integer
cnt = DataTables("趋势汇总").SQLReplaceFor("正确率历史", "Convert(nvarchar(10),[生成日期],120) + \'(\' + CAST([平均正确率] AS nvarchar) + \'/\' + CAST([正值正确率] AS nvarchar) + \'/\' + CAST([负值正确率] AS nvarchar) + \')\'", "正确率历史 is null", True)
Output.Show("合计更新了" & cnt & "条记录的折扣!")