SQL中将数据字段变为百分数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL中将数据字段变为百分数相关的知识,希望对你有一定的参考价值。

例如:显示为40.0000,变为40%的语句,只保留整数位,不用留两位小数

这个是显示格式的问题,试试:


假设,aaa 是float的字段或者变量,存储了40.0000

cast(cast(aaa as int) as varchar(10) + '%'

参考技术A 没有啊,只能自己弄啦,存为字符串还行
存字符串就这样

select cast(cast(0.04222 * 100 as numeric(18,0)) as varchar(20)) + '%'

要做运算得时候,只能将%号截取然后除以100就是你的实际数
参考技术B convert(nvarchar(12),floor([culomn]/100))+'%' 参考技术C select to_number(40.0000)||'%' from dual

不知是不是你想要的结果,可以追问

在 MVC 中将数据从视图传递到控制器时,数据列表变为空

【中文标题】在 MVC 中将数据从视图传递到控制器时,数据列表变为空【英文标题】:List of data is getting null when passing data from view to controller in MVC 【发布时间】:2015-10-13 09:22:05 【问题描述】:

我是 mvc 的新手。我想将数据列表从视图发送到控制器。我可以传递一名员工的详细信息,但不能传递列表。请提出一些建议来解决它。

错误:-

我需要在控制器中获取 Lidt。

  public class EmpDetails

    public int Id  get; set; 
    public string Name  get; set; 
    public int OldSeq  get; set; 
    public int NewSeq  get; set; 

public class DetailsList

    public int Id  get; set; 
    public IEnumerable<EmpDetails> EmpDetailsList  get; set; 

在控制器中有两个方法get和post。在 post 方法中获取 id 但不是 list.it 以 null 的形式出现。

[HttpGet]
    public ActionResult EmployeeDetails()
    
        List<EmpDetails> c2 = new List<EmpDetails>();
        EmpDetails model = new EmpDetails();


        model = new EmpDetails();
        model.Id = 2;
        model.Name = "Alex";
        model.OldSeq = 4;
        model.NewSeq = 5;
        c2.Add(model);

        DetailsList abc = new DetailsList();
        abc.Id = 1;
        abc.EmpDetailsList = c2;
        return View(abc);
    
    [HttpPost]
    public ActionResult EmployeeDetails(DetailsList model)
    

        return View("EmployeeDetails");
    

在视图中,我正在循环数据并显示。

      @using MvcDemo.Models
      @model  DetailsList

       @using (Html.BeginForm())

    @Html.ValidationSummary(true)
     @Html.EditorFor(modelItem => modelItem.Id)
    <table>
        @foreach (var item in Model.EmpDetailsList)
        
            <tr>
                <td>
                    @Html.EditorFor(modelItem => item.Id)
                </td>
                <td>
                    @Html.TextBoxFor(modelItem => item.Name)
                </td>
                <td>
                    @Html.TextBoxFor(modelItem => item.OldSeq)
                </td>
                <td>
                     @Html.TextBoxFor(modelItem => item.NewSeq)
                </td>

            </tr>
        
    </table>
        <input type="submit" value="Create" />

【问题讨论】:

您不能使用foreach 循环。您必须使用for 循环(属性必须为IList&lt;EmpDetails&gt; 或者您必须使用自定义EditorTemplate 更多详情请参阅this answer 感谢您的回复。您能解释一下为什么我需要使用 for 循环吗? 另请参阅 this answer 以获取 EditorFor() 方法的示例 @nichu09 - 这是使用 for 循环方法进行绑定的方式,生成的 html 将与您的模型匹配,而您的 post 将起作用。 没错!当您将其可视化时,它会更有意义。 【参考方案1】:

使用这样的编辑器模板。

    在您的Views/Shared 文件夹中创建EditorTemplates 文件夹。 在该文件夹中创建一个名为 EmpDetails.cshtml 的文件。

    将您的 foreach 标记放在该文件中,例如

    @model EmpDetails
    <tr>
        <td>
            @Html.EditorFor(modelItem => Model.Id)
        </td>
        <td>
            @Html.TextBoxFor(modelItem => Model.Name)
        </td>
        <td>
            @Html.TextBoxFor(modelItem => Model.OldSeq)
        </td>
        <td>
            @Html.TextBoxFor(modelItem => Model.NewSeq)
        </td>
    </tr>
    

    然后将您的foreach 替换为对@Html.EditorTemplateFor 方法的调用,例如

    @using MvcDemo.Models
    @model  DetailsList
    
    @using (Html.BeginForm())
    
        @Html.ValidationSummary(true)
        @Html.EditorFor(modelItem => modelItem.Id)
        <table>
            @Html.EditorFor(m=>m.EmpDetailsList)
        </table>
        <input type="submit" value="Create" />
    
    

【讨论】:

【参考方案2】:

感谢您的快速回复。在@stephen 评论的帮助下,我将 IEnumerable 集合更改为 List。然后我使用 for 循环而不是 for each。请检查以下代码。

 public class DetailsList

    public int Id  get; set; 

    public List<EmpDetails> EmpDetailsList  get; set; 


 <table>
     @for(int item = 0; item < Model.EmpDetailsList.Count;item++ )
     
            <tr>
                <td>
                    @Html.EditorFor(modelItem => modelItem.EmpDetailsList[item].Id)
                </td>
                <td>
                    @Html.TextBoxFor(modelItem => modelItem.EmpDetailsList[item].Name)
                </td>
                <td>
                    @Html.TextBoxFor(modelItem => modelItem.EmpDetailsList[item].OldSeq)
                </td>
                <td>
                     @Html.TextBoxFor(modelItem => modelItem.EmpDetailsList[item].NewSeq)
                </td>

            </tr>
     
        </table>

【讨论】:

【参考方案3】:
 public ActionResult EmployeeDetails()
    
        List<EmpDetails> c2 = new List<EmpDetails>();
        EmpDetails model = new EmpDetails();


        model = new EmpDetails();
        model.Id = 2;
        model.Name = "Alex";
        model.OldSeq = 4;
        model.NewSeq = 5;
        c2.Add(model);

        DetailsList abc = new DetailsList();
        abc.Id = 1;
 //  abc.EmpDetailsList = c2;

//change this might help
    abc.EmpDetailsList = new List<EmpDetails>(c2);


        return View(abc);
    

【讨论】:

也许添加一些关于如何回答问题的细节会有所帮助。 试试这个 abc.EmpDetailsList =new List(c2);

以上是关于SQL中将数据字段变为百分数的主要内容,如果未能解决你的问题,请参考以下文章

SQL中将某个表中的多行数据在一个字段显示

DB2/SQL怎样把列名变为一列数据

SQL怎么把小数转换为百分比?

sql中如何将已经赋值的字段变为原有的null

在 SQL Server 2008 中将数据从浮点类型的 Excel 导入 varchar

sql server中将一个字段根据某个字符拆分成多个字段显示