Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 在经典asp中,如何按字母顺序显示下拉选项而不必担心区分大小写?_Sorting_Vbscript_Asp Classic - Fatal编程技术网

Sorting 在经典asp中,如何按字母顺序显示下拉选项而不必担心区分大小写?

Sorting 在经典asp中,如何按字母顺序显示下拉选项而不必担心区分大小写?,sorting,vbscript,asp-classic,Sorting,Vbscript,Asp Classic,在我的经典ASP页面中有一个下拉框,并使用MS SQL作为数据库。下拉列表包括以小写字母开头的品牌名称、以大写字母开头的品牌名称和以数字开头的品牌名称 例如,iT化妆品、Colorpop化妆品和5小时能量。目前,此下拉列表按字母顺序显示/显示品牌,但按大小写,即小写、数字、大写 换言之,它首先按字母顺序显示所有小写的品牌名称,然后按字母顺序显示带有数字的品牌名称,最后按字母顺序显示以大写字母开头的品牌名称 然而,我正在尝试的是:我希望按照字母顺序显示我的选项,而不必担心品牌名称的情况 例如:如果

在我的经典ASP页面中有一个下拉框,并使用MS SQL作为数据库。下拉列表包括以小写字母开头的品牌名称、以大写字母开头的品牌名称和以数字开头的品牌名称

例如,iT化妆品、Colorpop化妆品和5小时能量。目前,此下拉列表按字母顺序显示/显示品牌,但按大小写,即小写、数字、大写

换言之,它首先按字母顺序显示所有小写的品牌名称,然后按字母顺序显示带有数字的品牌名称,最后按字母顺序显示以大写字母开头的品牌名称

然而,我正在尝试的是:我希望按照字母顺序显示我的选项,而不必担心品牌名称的情况

例如:如果品牌名称是1个苹果、applea、Appleb、3个粉丝、balla、Ballb、cat、Doll

目前,其显示下拉选项如下:

applea balla cat 1 apple 3 fans Appleb Ballb Doll 1 apple 3 fans applea Appleb balla Ballb cat Doll 但我想要如下的东西:

applea balla cat 1 apple 3 fans Appleb Ballb Doll 1 apple 3 fans applea Appleb balla Ballb cat Doll 我该怎么做

我的代码:

<select>
    <OPTION value=0>-- SELECT --</OPTION>
        <% 
            DIM RS, varQueryBrand, varBrand

            IF Request.QueryString("brandID") <> "" THEN
                varQueryBrand = Request.QueryString("brandID")
            ELSE
                    varQueryBrand = "SELECT"
            End IF

            SQL = "SELECT DISTINCT(brand) as brand FROM tblproduct"

            SET RS=objConn.Execute(SQL)  

            IF NOT (RS.BOF and RS.EOF) THEN 
                WHILE NOT RS.EOF
                    varBrand = RS("brand") 
                    IF LCase(varQueryBrand) = LCase(varBrand) THEN
                        Response.Write "<option selected value=""" & replace(RS("brand")," & ","@") & """>" & RS("brand") & "</option>"
                    ELSE            
                        Response.Write "<option value=""" & replace(RS("brand")," & ","@") & """>" & RS("brand") & "</option>"
                    End IF
                    RS.MoveNext
                WEND 
            END IF
                 RS.close
                SET RS = nothing
        %>
    </select>

我尝试在SQL语句末尾按品牌编写订单,但输出中没有任何变化。那么,您能帮助我吗?

从外观上看,您目前根本没有对结果进行排序,因此您得到的是SQL Server想要的任何默认顺序

大多数数据库都会自动设置为不区分大小写的排序,因此,除非您的数据库设置得很奇怪,否则以下操作应该可以正常工作:

SQL = "SELECT DISTINCT brand FROM tblproduct ORDER BY brand"
如果这不起作用,并且您不想乱搞排序规则设置,您可以按字段的全小写或全大写版本进行排序:

SQL = "SELECT DISTINCT brand FROM tblproduct ORDER BY LOWER(brand)"

您可能会使用带有CS名称的排序规则,例如Latin1_General_CS_

要避免Unicode排序,请切换到二进制排序规则以获得预期的排序顺序

选择独特的品牌 来自tblproduct 按品牌排序核对拉丁1\u一般\u bin 一种稍微混乱的方法是使用子查询来包装Brand列的小写版本,并使用它进行排序

选择x品牌 从…起 选择不同的品牌,较低品牌[品牌较低] 来自tblproduct x x.brand_下单 在经典ASP中,不要忘记在SQL字符串中指定ORDER BY

有用的链接
洛伯兰ASC的订单怎么样?这并不理想,尽管我可能会将其包装在子查询中拉出LOWERbrand[brand_low],然后在子查询之外按[brand_low]排序。这可能有助于您更好地理解-,建议使用二进制排序可能是您所追求的-按brand COLLATE Latin 1_General_bin排序。当我尝试您提到的第一个选项时,它什么也没做。i、 e.我的产出没有变化。对于第二个选项,它隐藏除选择默认选项之外的所有下拉选项。另外,我正在寻找混合的大小写,不仅仅是小写字母1和大写字母。@VicStat:您可以尝试在数据库管理器本身Enterprise manager或SQL Server Management Studio中运行此查询,或者在您的SQL Server版本中运行此查询吗?不返回结果意味着发生了某种错误。