Ⅰ 在存儲過程中,如何把smallint類型轉換成char類型
Qt下面,字元串都用QString,確實給開發者提供了方便,想想VC裡面定義的各種變數類型,而且函數參數類型五花八門,經常需要今年新那個類型轉換
Qt再使用第三方開源庫時,由於庫的類型基本上都是標準的類型,字元串遇的多的就是Char*類型
在Qt下怎樣將QString轉char*呢,需要用到QByteArray類,QByteArray類的說明詳見Qt幫助文檔。
因為char*最後都有一個『/0』作為結束符,而採用QString::toLatin1()時會在字元串後面加上『/0』
方法如下:
Qstring str;
char* ch;
QByteArray ba = str.toLatin1();
ch=ba.data();
這樣就完成了QString向char*的轉化。經測試程序運行時不會出現bug
注意第三行,一定要加上,不可以str.toLatin1().data()這樣一部完成,可能會出錯。
補充:以上方法當QString里不含中文時,沒有問題,但是QString內含有中文時,轉換為char*就是亂碼,採用如下方法解決:
方法1:
添加GBK編碼支持:
#include <QTextCodec>
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
然後改變上面的第三行為:QByteArray ba = str.toLoacl8Bit(); toLoacl8Bit支持中文
方法2:
先將QString轉為標准庫中的string類型,然後將string轉為char*,如下:
std::string str = filename.toStdString();
const char* ch = str.c_str();
Ⅱ sql server 存儲過程varchar到int類型轉換
/*
存儲過程的return只能返回int類型的數據,並且只這樣接收返回值的
declare@Aint
Exec@A=P_判斷是否閏年
select@A
*/
--你可以改成這樣
alterprocP_判斷是否閏年
as
begin
declare@時間int
set@時間=datepart(year,'2000-02-01')
selectCASEWHEN(@時間%4=0AND@時間%100<>0)or(@時間%400=0)then'是閏年'
else'不是閏年'
end
end
--也可以這樣
alterprocP_判斷是否閏年(@RstVarchar(10)output)
as
begin
declare@時間int
set@時間=datepart(year,'2000-02-01')
Set@Rst=CASEWHEN(@時間%4=0AND@時間%100<>0)or(@時間%400=0)then'是閏年'
else'不是閏年'
end
end
/*
declare@Avarchar(10)
ExecP_判斷是否閏年@Aoutput
select@A
*/
Ⅲ 如何對存儲過程中的變數進行類型轉換
/*負債表中未分配利潤(管理費用)期初數*/if @yue=01beginselect @fzglqc1=sum(feiyong) from hqhesuan whereyear=@nian-1and (month<='12')set @fzglfyqc=@fzglqc1endelsebeginselect @fzglqc=sum(feiyong) from hqhesuan where year=@nianand (month<=@yue-1)set @fzglfyqc=@fzglqcend象上面的一段代碼中@YUE為字元變數,要進行@yue-1的運算時需要轉換成整數,如何做??
Ⅳ 如何在sql server存儲過程中轉化數據類型
不一定非要在存儲過程中轉換,用普通的sql語句就可以,一般用cast函數。
測試方法:
創建表及插入數據:
createtabletest
(idint,
starttimevarchar(20));
insertintotestvalues(1,'2015-07-11');
將starttime欄位轉化為datetime類型:
selectcast(starttimeasdatetime)fromtest;
結果如圖,這時,starttime就轉成了datetime類型:
Ⅳ SqlServer 中存儲過程:money類型與char類型的轉換問題
自己寫的么?
1有些地方沒必要4個單引號,3個就行,在sql中字元串的拼接語句中要表示1個單引號就得用兩個單引號,前一個表示轉義的意思,編程語言都有轉義一說
2因為是字元串拼接的,而@FormerPrice這些是money類型的,如果不轉換,就默認要把字元串轉換成money類型了,就會出錯。所以得把@FormerPrice之類的轉換成字元類型的,存儲過程修改如下
ALTER
PROCEDURE
[dbo].[SearchMerchandise]
@Category
varchar(50),
@Brand
varchar(50),
@Type
varchar(50),
@FormerPrice
money,
@LatterPrice
money
AS
BEGIN
declare
@QueryString
varchar(100)
set
@QueryString
=
'select
*
from
Merchandise
where
Category
=
'''
+
@Category
+
'''
and
Brand
=
'''
+
@Brand
+
'''
'
SET
NOCOUNT
ON;
if
@Type<>''
set
@QueryString
=
@QueryString+'
and
Type='''
+@Type+
''''
if
@FormerPrice<>''
and
@LatterPrice<>''
set
@QueryString
=
@QueryString+'
and
PriceNow
between
'''+
convert(varchar(20),@FormerPrice)
+
'''
and
'''
+
convert(varchar(20),@LatterPrice)
+
''''
if
@FormerPrice<>''
and
@LatterPrice=''
set
@QueryString
=
@QueryString+'
and
PriceNow
>='''
+
convert(varchar(20),@FormerPrice)
+
''''
if
@FormerPrice=''
and
@LatterPrice<>''
set
@QueryString
=
@QueryString+'
and
PriceNow
<='''
+
convert(varchar(20),@LatterPrice)
+
''''
exec(@QueryString)
END
因為沒有表結果不能進行測試,所以可能會出錯,如果出錯就把表結果發一下,進行測試
Ⅵ oracle 存儲過程轉換類型問題。
你的to_date(''||2010-12-30||'' ,'yyyy-MM-dd'),函數寫錯了, 因為減號的優先順序比||高,''||2010-12-30||''得到的是一個4位數, 寫成下面這樣就行了
to_date('2010-12-1' ,'yyyy-MM-dd'), 還有這樣寫雖然oracle寫可以, 年月最好寫的規范一點,寫成to_date('2010-12-01' ,'yyyy-MM-dd')
Ⅶ 存儲過程 string 類型 怎麼轉換成 int
在C#里?
string str="12345";
int number = int.Parse(str);
Ⅷ 存儲過程類型轉換
自己寫的么?
1有些地方沒必要4個單引號,3個就行,在sql中字元串的拼接語句中要表示1個單引號就得用兩個單引號,前一個表示轉義的意思,編程語言都有轉義一說
2因為是字元串拼接的,而@FormerPrice這些是money類型的,如果不轉換,就默認要把字元串轉換成money類型了,就會出錯。所以得把@FormerPrice之類的轉換成字元類型的,存儲過程修改如下
ALTER PROCEDURE [dbo].[SearchMerchandise]
@Category varchar(50),
@Brand varchar(50),
@Type varchar(50),
@FormerPrice money,
@LatterPrice money
AS
BEGIN
declare @QueryString varchar(100)
set @QueryString = 'select * from Merchandise where Category = ''' + @Category + ''' and Brand = ''' + @Brand + ''' '
SET NOCOUNT ON;
if @Type<>''
set @QueryString = @QueryString+' and Type=''' +@Type+ ''''
if @FormerPrice<>'' and @LatterPrice<>''
set @QueryString = @QueryString+' and PriceNow between '''+ convert(varchar(20),@FormerPrice) + ''' and ''' + convert(varchar(20),@LatterPrice) + ''''
if @FormerPrice<>'' and @LatterPrice=''
set @QueryString = @QueryString+' and PriceNow >=''' + convert(varchar(20),@FormerPrice) + ''''
if @FormerPrice='' and @LatterPrice<>''
set @QueryString = @QueryString+' and PriceNow <=''' + convert(varchar(20),@LatterPrice) + ''''
exec(@QueryString)
END
因為沒有表結果不能進行測試,所以可能會出錯,如果出錯就把表結果發一下,進行測試