我刚刚学delphi,请教各位高手,case函数是不是不能直接转换数据库里的表达式字段阿?像select cast(字段名 as char) from 表,出来的好像仍然是表达式,而不是表达式的值.怎样才能直接转换过来呢?
解决方案 »
- 网络编程组包
- 电脑怎么会出现这种情况
- 寻求EDIT只能限制输入数字且指定小数位,输完后自动跳下一控件的方法
- 急:如何通过查询,将数据表中的记录为数字的列转化为相应的文字,于DBGrid中显示
- 关于 注册表 清理 的原理 的问题??????????
- 劳烦高手帮看一下代码!老是报错!
- AnimateWindow的問題
- 每个问题33分:三层结构应用程序(ADO\BDE\ODBC)如何发布给最终用户?
- Delphi中如何进行protel的二次开发(急)!
- 文档中心有篇文章,关于图象缩放的,但不完整,请大虾们给个完整的例子,行吗?
- 从数据库中查询出ComboBox1下拉列表中的值
- 如何:快速对比查找两个字符串的第一个不同位置
select cast(字段名 as char) as 别名
from tblname
declare @Expression varchar(20)
set @Expression='0.8*100/20'
execute ('select '+@expression)
create table t(id int identity(1,1),e varchar(20))
go
--插入数据
insert into t select '0.8*100/20'
union select '0.8*100/23'
union select '0.8*100/37'
go
--创建存储过程
create proc p_t
as
declare @s varchar(8000)
select @s=' select id,e,'
select @s=@s+e+'[value] from t where id = '+convert(varchar(20),id)+' union select id,e, ' from t
exec (@s+' null from t where id=-1')
go
--测试
exec p_t
go
drop table t
drop proc p_t
/*id e value
----------- -------------------- ------------
1 0.8*100/20 4.000000
2 0.8*100/23 3.478260
3 0.8*100/37 2.162162
*/
create proc p_t(@Expression varchar(20))
as
execute ('select '+@expression)
go程序里一条一条循环取值
with adoquery1 do
begin
close;
sql.text := 'select e from table1';
open;
first;
while not eof do
begin
with adoStoredProc1 do
begin
close;
procedureName ;= 'p_t;1';
parameters.refresh;
parameters[1].value := adoquery1.FieldByName('e').asString;
Open;
showmessage(Adoquery1.Fields[0].asstring);
end;
next;
end;
end