sql语句:CASE WHEN精妙语句
说种情况如商品价格,把不同区域的价格的小数改变成.49, .75, .99以便促销活动。
下面SQL语句代码描述。价格提10%后把小数位改成49, .75, .99
- SELECT @Markup = .10
- SELECT @Multiplier = @Markup +1
- SELECT TOP 10 ProductID, ProductName, UnitPrice, UnitPrice * @Multiplier AS "Marked Up Price", "New Price" =
- CASE
- WHEN FLOOR(UnitPrice * @Multiplier + .24) > FLOOR(UnitPrice * @Multiplier) THEN FLOOR(UnitPrice * @Multiplier) + .95
- WHEN FLOOR(UnitPrice * @Multiplier + .5) > FLOOR(UnitPrice * @Multiplier) THEN FLOOR(UnitPrice * @Multiplier) + .75
- ELSE FLOOR(UnitPrice * @Multiplier) + .49
- END
- FROM Products
- ORDER BY ProductID DESC
此代码语句中用到了CASE WHEN条件语句与FLOOR函数,先解释下
FLOOR把数值取整:
- PRINT FLOOR(12.1)
- --返回12
- PRINT FLOOR(12.9)
- --返回12
CASE WHEN条件语句稍有些编程基础的人应该都有看懂重点不解释这个语句怎么用的。说下上面代码。个人认为还是比较精妙的
- SELECT @Markup = .10
- SELECT @Multiplier = @Markup +1
- UnitPrice * @Multiplier
把价格提升10%。
- FLOOR(UnitPrice * @Multiplier + .24) > FLOOR(UnitPrice * @Multiplier) THEN FLOOR(UnitPrice * @Multiplier) + .95
- --FLOOR(18.00 * 1.1 + .24) > FLOOR(1.8 * 1.1)
- --FLOOR(19.8 + .24) > FLOOR(19.8)
- --21 > 19.8
- --成立后返回FLOOR(19.8) + .95,这也是为什么+.24而不是其它数值。综合上面CASE WHEN语句就能更好的理解
CASE WHEN, floor(), sql语句
sql语句:alter table语句修改数据表
对表的修改分三种:添加字段,修改字段,删除字段
Table:表名, File:字段
添加字段:Alert table Table Add File int null,
修改字段:Alert table Table Alert column File varchar(20) null,
删除字段: Alter table Table Drop column File
对于设置identity 属性的字段。修改方法很难实现。还是直接删除后再次建立
indentity : 表示默认即 indentity(1,1)
indentity(基数,种子)
- Alter table Employees Add cccc int null
- Alter table Employees drop column cccc
- Alter table Employees Drop column EmployeeID
- Alter table Employees Add EmployeeID int identity (1,1) not null
- Alter table Employees Alter column FirstName varchar(20) null
- Alter table Employees Alter column LastName varchar(20) null
Alter column, alter table, Drop column, indentity
net之旅:XmlDocument对象
工作中遇到操作xml节点。对其节点值加1.后考虑到XmlDocument对象
使用XmlDocument类前必先引用两个命名空间:
- using System.Xml;
- using System.IO;
操作节点值代码如下:
- XmlDocument xmlDoc = new XmlDocument();
- xmlDoc.Load(Server.MapPath("~/App_Data/xml.xml"));
- XmlNodeList elemList = xmlDoc.GetElementsByTagName("SiteName");
-
- XmlNode mNode;
- for (int i = 0; i < elemList.Count; i++)
- {
- mNode = elemList[i];
- mNode.InnerText = Convert.ToString(Convert.ToInt16(mNode.InnerText) - 1);
- }
-
- XmlTextWriter xw = new XmlTextWriter(new StreamWriter(Server.MapPath("~/App_Data/xml.xml")));
- xw.Formatting = Formatting.Indented;
- xmlDoc.WriteTo(xw);
- xw.Close();
GetElementsByTagName(), Net之旅, XmlDocument对象, xml节点
Net之旅:Parameter 对象
Parameter 对象代表与基于参数化查询或存储过程的 Command 对象相关联的参数或自变量.在参数化查询时。使用Parameter对象还有利于防止注入。
Parameter 对象属性与方法:
Name 属性可设置或返回参数名称;
Value 属性可设置或返回参数值;
Attributes 和 Direction、Precision、NumericScale、Size 以及 Type 属性可设置或返回参数特性;
AppendChunk 方法可将长整型二进制或字符数据传递给参数
Command对象操作Parameter对象代码:
- //定义SQL查询语句
- string queryString = "Select au_id,au_fname,au_lname,state from authors where state=@state";
- //创建并设置SqlCommand
- SqlCommand dbCommand = new SqlCommand();
- dbCommand.Connection = dbConnection;
- dbCommand.CommandType = CommandType.Text;
- dbCommand.CommandText = queryString;
- //设置参数@state
- SqlParameter dbParameter_state = new SqlParameter();
- dbParameter_state.ParameterName = "@state";
- dbParameter_state.Value = state;
- dbParameter_state.DbType = DbType.StringFixedLength;
- //向SqlCommmand中添加@state
- dbCommand.Parameters.Add(dbParameter_state);
Read the rest of this entry »
Net之旅, Parameter 对象