读书人

RTrim和LTrim,如何不起作用?SQL小问

发布时间: 2013-08-14 14:27:55 作者: rapoo

RTrim和LTrim,怎么不起作用?SQL小问.
这是我在SSMS写的临时SQL代码:


这是我在存储过程写的,其实和上面的最后两条一样:
ALTER PROCEDURE USP_GetT_StuffBasicFilterExtraFiledByField--过滤从别的表获得数据的字段值.
@FieldName nvarchar(20),
@FieldVal nvarchar(50)
AS
SET NOCOUNT ON
declare @query nvarchar(max)
set @query = 'select FId,FStuffName,LTrim(RTrim(FFolk)),FFolk,FBirthday,FAge,LTrim(RTrim(FKultur)),FKultur,FMarriage,
FSex,LTrim(RTrim(FVisage)),FVisage,FIdCard,FWorkDate,FWorkLength,LTrim(RTrim(FEmployeeGenere)),FEmployeeGenere,
LTrim(RTrim(FBusiness)),FBusiness,LTrim(RTrim(FLaborage)),FLaborage,LTrim(RTrim(FBranch)),FBranch,
LTrim(RTrim(FDuthcall)),FDuthcall,FPhone,FHandSet,FSchool,FSpeciality,FGraduateDate,FAddress,FPhoto,
LTrim(RTrim(FProName)),FProName,LTrim(RTrim(FCityName)),FCityName,FMonthSalary,FBankNum,FPackStartDate,
FPackEndDate,FPactYear,FStuId from T_StuffBasic where '+@FieldName+' = '''+@FieldVal+''''
exec(@query)


我将上面的存储过程封装为一个方法,返回DataTable.
C#代码为:
/// <summary>
/// 指定存储过程名,返回的表名,字段名和对应的值查找结果.
/// </summary>
/// <param name="proceName">存储过程名.</param>
/// <param name="tableName">表名.</param>
/// <param name="fieldName">字段名.</param>
/// <param name="fieldVal">字段值.</param>
/// <returns>返回结果集的DataTable.</returns>
public static DataTable GetStuffBasicDataTableByProcedure(string proceName, string tableName, string fieldName, string fieldVal) {
_Set = new DataSet();
using(SqlConnection connect = new SqlConnection(strConn)) {


connect.Open();
using(SqlCommand cmd = connect.CreateCommand()) {
cmd.CommandText = proceName;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@FieldName", SqlDbType.NVarChar, 20).Value = fieldName;
cmd.Parameters.Add("@FieldVal", SqlDbType.NVarChar, 50).Value = fieldVal;
_Adapter = new SqlDataAdapter(cmd);
_Adapter.Fill(_Set, tableName);
return _Set.Tables[tableName];
}
}
}


当我调用的时候,
DataRow rCurrent = _AcceptTable.Rows[_SelectedIndex];
string s = rCurrent["FBranch"]
//这里s返回"C#部门 ",也就是说怎么还有空格.何解?


我的代码虽然上了很多,但是问题很简单明了...大家帮忙看看...谢谢了...
[解决办法]
rCurrent["FBranch"].TOSTRING().TRIM();

[解决办法]
想到两个地方,你确认
数据类型如果是char的,改成varchar就好了,否则怎么trim都是定长
.net的trim是包括全角空格的,数据库是怎么trim就不清楚了

读书人网 >C#

热点推荐