德国校对比较作为 Nvarchar

时间:2021-03-23 15:08:31

标签: sql sql-server

我在比较两个字符串时遇到问题,一个带有德国特殊字符“ß”,另一个带有普通字符“ss”。我的数据库是“SQL_Latin1_General_CP1_CI_AS”排序规则,它应该比较这些字符,并且只有当我将它们作为硬编码字符串进行比较时,它才会按预期进行。但是,当我使用 cast 将它们转换为 NVARCHAR 时,它会将它们视为平等。我不明白为什么改变类型会产生影响。下面是我的例子。

import 'package:flutter/material.dart';

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  ScrollController _scrollController;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      extendBodyBehindAppBar: true,
      appBar: AppBar(
        backgroundColor: Colors.transparent,
        elevation: 0.0,
      ),
      body: Container(
        color: Colors.blue.withOpacity(0.25),
        child: ListView.builder(
          itemCount: 30,
          itemBuilder: (context, index) {
            return Container(
              color: Colors.primaries[index % Colors.primaries.length].withOpacity(0.5),
              child: ListTile(
                title: Text('Item $index'),
              ),
            );
          },
          controller: _scrollController,
        ),
      ),
    );
  }

  @override
  void initState() {
    _scrollController = ScrollController(initialScrollOffset: 100, keepScrollOffset: true)
      ..addListener(() {
        print("offset = ${_scrollController.offset}");
      });
    super.initState();
  }
}

void main() {
  runApp(MaterialApp(home: HomePage()));
}

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。从 Nvarchar 更改为 Varchar 终于解决了这个问题。详情链接如下:

https://docs.microsoft.com/en-us/answers/questions/327844/german-collation-comparision-as-nvarchar.html

相关问题