Advantage SQL DB 中的等效 strconv

Equivalent strconv in Advantage SQL DB

我正在将更新字段的访问查询从全部大写转换为基本正常的首字母大写,其余小写。在访问中我使用了 strconv 我还没有在 sql db 中找到类似的功能。我找到了 upper 和 lcase,但那些似乎不适合我。

StrConv([城市],3)

导入过程将所有大写字母导入名为 City 的字段。所以城市以芝加哥的形式出现,我的最终结果是芝加哥,这在使用 strconv,3

的访问中有效

从未使用过 advantage 但快速 Google 建议像下面这样的方法应该有效。

CONCAT(SUBSTRING(field, 1, 1), LOWER(SUBSTRING(field, 2, LENGTH(field) - 1)))

这个语句应该有效:SELECT Upper( Left( [field], 1 ) ) + Lower( SubString( [field], 2, Length( [field] )-1 ) ) FROM CustomersTbl

Advantage 没有 StrConv 功能,但有几种方法可以做同样的事情。

我在此代码段中使用了一个脚本变量来模拟该字段。您可以将 cityname 的所有实例替换为您的数据库列(字段)的名称。选择一个你喜欢的。 system.iota 是一个单行系统数据库,当您不想使用真正的 table 来测试功能时,可以在 Advantage 中使用它。当然,您会在自己的代码中将其替换为您的实际 table 名称。您可以 运行 Advantage Database Utility 中的每个示例 select 语句(单独)来测试它们;选择您认为最干净的那个,因为就性能而言它们都是一样的。 (注意:UCase()UpperCase() 在内部是完全相同的函数;它们的存在仅仅是因为一些用户希望根据他们使用的编程语言找到 UCase() 和其他 UpperCase()再用。LCase()LowerCase()也是一样。)

我在下面的变量 cityname 中故意使用了 UPPER/lower 大小写字母的混合包来证明实际大小写无关紧要;提供的语句将产生一个适当大小写(第一个字母大写,其余字母小写)的结果。

declare cityname string;
set cityname = 'cHIcAGo';

-- Method 1
select 
  UCase(Substring(cityname, 1, 1)) + LCASE(SubString(cityname, 2, Length(cityname))) as city
from system.iota

-- Method 2
select
  UpperCase(Left(cityname, 1)) + LowerCase(SubString(cityname, 2, Length(cityname)) as city
from system.iota

-- Method 3
select 
  UCase(Left(cityname, 1)) + LCase(Right(cityname, Length(city) - 1)) as city
from system.iota