nvarchar只需要包含英文或格鲁吉亚字母

时间:2019-06-26 19:20:20

标签: sql sql-server constraints check-constraints

我的约束: (datalength([Firstname])>=(2) AND datalength([Firstname])<=(50) AND (NOT [Firstname] like '%[^a-zA-Z]%' AND NOT [Firstname] like N'%[^ა-ზ]%'))

添加带有格鲁吉亚字母的名字会导致错误:enter image description here

怎么了?

1 个答案:

答案 0 :(得分:0)

我对格鲁吉亚的名字一无所知,但也许您选择的首字母和尾字母不适合您的排序规则。也许最好的办法是只列出所有允许的字符。代替:

N'%[^ა-ზ]%'

也许是这样的:

 N'%[^ႠႡႢႣႤႥႦႧႨႩႪႫႬႭႮႯႰႱႲႳႴႵႶႷႸႹႺ'
+N'ႻႼႽႾႿჀჁჂჃჄჅჇჍაბგდევზთიკლმნოპჟრს'
+N'ტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶჷჸჹჺჼჽჾჿⴀⴁⴂⴃⴄⴅ'
+N'ⴆⴇⴈⴉⴊⴋⴌⴍⴎⴏⴐⴑⴒⴓⴔⴕⴖⴗⴘⴙⴚⴛⴜⴝⴞⴟⴠⴡⴢ'
+N'ⴣⴤⴥⴧⴭ]%'

除此之外,请确保所有逻辑运算符,ANDNOTOR都是合适的。

您可能要考虑此限制是否适合您的需求。人的名字可能比您想象的要多样化。 Google“ Falsehoods Programmers Believe About Names