sql server中,一栏位格式如:国家-省-城市-... 现在我要按照城市来筛选数据,怎么使用sql语句来实现?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server中,一栏位格式如:国家-省-城市-... 现在我要按照城市来筛选数据,怎么使用sql语句来实现?相关的知识,希望对你有一定的参考价值。
其实也就是使用第二个“-”和第三个“-”之间的内容来比较
参考技术A SELECT * FROM 表名 WHERE (字段名 LIKE '%城市名%')把其中的
表名、字段名、城市名
改成你的即可。 参考技术B 因为不是固定位数的,可以试试用自定义函数的方法实现,就是自定义一个函数,截取这个字段的第二个“-”和第三个“-”之间的内容。 参考技术C select PATINDEX ('%-%-桂林-%', '中国-广西-桂林-两江机场')
select PATINDEX ('%-%-桂林-%', '中国-上海-徐汇区-桂林路')
select PATINDEX ('%-%-中国%', '中国-广西-桂林-两江机场');
select PATINDEX ('%-%-广西%', '中国-广西-桂林-两江机场');
勉强能用, 略有些问题.本回答被提问者和网友采纳
如何使LAG()在SQL Server中忽略NULL?
有人知道如何用字符串替换列中的空值,直到命中新的字符串,然后该字符串替换其下的所有空值?我有一栏看起来像这样]
原始列:
PAST_DUE_COL 91 or more days pastdue Null Null 61-90 days past due Null Null 31-60 days past due Null 0-30 days past due Null Null Null
预期结果列:
PAST_DUE_COL 91 or more days past due 91 or more days past due 91 or more days past due 61-90 days past due 61-90 days past due 61-90 days past due 31-60 days past due 31-60 days past due 0-30 days past due 0-30 days past due 0-30 days past due 0-30 days past due
基本上,我希望列中的第一个字符串替换它下面的所有空值,直到下一个字符串。然后,该字符串将替换其下的所有null,直到下一个字符串,依此类推。
有人知道如何用字符串替换列中的空值,直到命中新的字符串,然后该字符串替换其下的所有空值?我有一列看起来像这样的原始列:...
答案
SQL Server不支持ignore nulls
和lead()
之类的窗口函数的lag()
选项,对此问题很合适。
另一答案
这是GMB回答的一种变体。只是简单一点:
另一答案
如果您有一个ID列,但前导/滞后不可用,则可以使用:
以上是关于sql server中,一栏位格式如:国家-省-城市-... 现在我要按照城市来筛选数据,怎么使用sql语句来实现?的主要内容,如果未能解决你的问题,请参考以下文章